我在“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”并将文件名放在引号中,但无济于事。任何帮助表示赞赏。
麦克
答案 0 :(得分:2)
该文件被另一个进程阻止读取。如果它不能被readed,它就存在,并且可以找到,但是for /f
无法处理它。尝试type file
或delete file
而不是命令,然后错误将是系统无法访问该文件,因为它正被另一个进程使用。