1

我在“for /f”无法找到具有特定名称的文件时遇到了一些困难。当文件或路径包含空格时,此站点上的许多用户都会遇到此问题,但此处并非如此。简单示例,名为“test4.cmd”的批处理文件:

 @echo off
 set ln=%1
 if exist 2013_10_23_Cal_Curve.txt echo The first file exists.
 if exist ~temp1.txt echo The second file exists.
 for /f "skip=%ln% tokens=2" %%a in (2013_10_23_Cal_Curve.txt) do echo Found the first file.
 for /f "skip=%ln% tokens=2" %%a in (~temp1.txt) do echo Found the second file.

输出:

C:\Users\wnc7\Desktop\jmp_test_data>test4 1
第一个文件存在。
第二个文件存在。
系统找不到文件 2013_10_23_Cal_Curve.txt。
找到第二个文件。
找到第二个文件。
找到第二个文件。
*(第二个文件的预期输出继续......)*

其他命令如 findstr 可以找到该文件,但 for/f 找不到。然而 for/f 可以找到以相同格式写入的 ~temp1.txt,并且在同一目录中。

我试过“usebackq”并将文件名放在引号中,但无济于事。任何帮助表示赞赏。

麦克风

4

1 回答 1

2

该文件被另一个进程阻止读取。如果无法读取,则存在,可以找到,但for /f无法处理。而不是 for command,try type fileor delete file,那么错误将是系统无权访问该文件,因为它正在被另一个进程使用。

于 2013-11-01T15:22:08.587 回答