Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 检查文件是否存在_Variables_Batch File_If Statement - Fatal编程技术网

Variables 检查文件是否存在

Variables 检查文件是否存在,variables,batch-file,if-statement,Variables,Batch File,If Statement,我有下面的bat,但它似乎不起作用我想检查tom.txt中的文件名,如果它存在,我什么也不想做,如果它不存在,我想运行runme.bat Echo Setting variable to file name set FAT=<C:\tom.txt ECHO Checking for file, if exists do nothing if not run bat... if exists %FAT% ( end )else( C:\runme.bat ) Echo将变量设置为文件名

我有下面的bat,但它似乎不起作用我想检查tom.txt中的文件名,如果它存在,我什么也不想做,如果它不存在,我想运行runme.bat

Echo Setting variable to file name
set FAT=<C:\tom.txt

ECHO Checking for file, if exists do nothing if not run bat...
if exists %FAT% (
end
)else(
 C:\runme.bat
)
Echo将变量设置为文件名

设置FAT=有一些小错误,但是,它们是造成您主要困难的原因

  • 您可以使用
    SET/p
    命令从文件中读取一行,而不仅仅是使用
    SET

    SET /P FAT=<C:\tom.txt
    
    此外,如果您只需要对文件不存在作出反应,则只需添加
    NOT

    IF NOT EXIST …
    
    因此,整个命令可能如下所示:

    IF NOT EXIST %FAT% C:\runme.bat
    
    IF NOT EXIST C:\tom.txt C:\runme.bat
    

  • 我相信正确的语法是

    if exist %FAT% goto NORUN
    C:\runme.bat
    :NORUN
    
    注意代码中的“exist”和“exists”。还有几件事需要注意:

  • 文件NUL存在于任何驱动器的任何目录中,因此检查 对于
    C:\NUL
    将始终返回true
  • 检查文件是否存在 在网络设备上并不总是正常工作

  • 有关更多信息,请参阅。

    我认为最简单的解决方案是在一行中完成所有操作,如下所示:

    IF NOT EXIST %FAT% C:\runme.bat
    
    IF NOT EXIST C:\tom.txt C:\runme.bat
    

    不需要变量,除非您打算再次使用它,它只意味着另一行代码。正如Aleks G和Andrey M所说,您需要确保命令和参数拼写正确。

    不正确
    tom.txt
    保证存在。我们想要的文件名存储在
    tom.txt
    中。