从 BATCH 中的.txt文件中读取,而不使用文本路径



基本上,我想使用type命令,但我无法提供实际路径。 目前我的尝试是

type "./TESTS/Test1.txt"

但我假设由于它是相对路径,因此它不起作用。 我在copyxcopy上遇到了同样的问题.

我一直无法解决这个问题或在网上找到任何东西。 有没有办法做到这一点?

编辑: 澄清一下,我正在尝试获取我的.bat文件,读取位于子文件夹中的.txt文件的内容(意味着子文件夹和.bat文件位于同一文件夹中(,并将其打印到控制台。

由于您现在已经编辑了您的问题,但似乎没有对我之前的评论提供反馈,因此这里是答案。

Windows及其命令解释器,cmd.exe使用反斜杠作为其路径分隔符。

尽管许多命令似乎可以互换地接受正斜杠,但Type不是其中之一。

此外,.仅相对于当前工作目录,并且在cmd.exe中是不必要的,尽管有效

因此,以下内容应按预期工作:

Type TESTSTest1.txt

Type "TESTSTest1.txt"

Type .TESTSTest1.txt

Type ".TESTSTest1.txt"

如果在批处理文件中接收到带有正斜杠的位置,则可以将其设置为变量,然后展开该变量,将正斜杠替换为反斜杠:

Set "Variable=./TESTS/Test1.txt"
Type "%Variable:/=%"

根据我们看不到的代码,可能需要先导航到批处理文件目录,因为在调用这些命令时它可能不一定是当前工作目录

为此,请使用:

CD /D "%~dp0"

%~dp0提供了批处理文件所在的文件夹(包括最后((当然只能在批处理文件中工作(。所以:

type "%~dp0Testtest1.txt"

正是您想要的:<folder_where_my_batchfile_is><subfolder_Test><File_test1.txt>
独立于您的"工作文件夹"(批处理文件可能cdpushd到(。

使用%CD%它基本上不是可以工作的吗?比如,TYPE "%CD%/Subfolder/Test1.txt"%CD%是"当前目录"的 windows 变量,应设置为批处理文件正在处理的任何目录,并且由于您尝试访问同一目录中的文件夹,因此应该可以工作。但是,您的问题非常不清楚,我希望我没有误解。

最新更新