for / f“系统找不到文件”在windows命令脚本中

时间:2013-11-01 14:24:13

标签: windows batch-file cmd

我在“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
The first file exists.
The second file exists.
The system cannot find the file 2013_10_23_Cal_Curve.txt.
Found the second file.
Found the second file.
Found the second file.
*(expected output continues for second file....)*

其他命令(如findstr)可以找到该文件,但是/ f无法找到它。然而对于/ f可以找到以相同格式写入的~temp1.txt,并且在同一目录中。

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

麦克

1 个答案:

答案 0 :(得分:2)

该文件被另一个进程阻止读取。如果它不能被readed,它就存在,并且可以找到,但是for /f无法处理它。尝试type filedelete file而不是命令,然后错误将是系统无法访问该文件,因为它正被另一个进程使用。