windows - 如何验证文件是否存在于批处理文件中?

标签 windows batch-file cmd

我必须创建一个执行此操作的 .BAT 文件:

  1. 如果C:\myprogram\sync\data.handler存在,则退出;
  2. 如果C:\myprogram\html\data.sql不存在,则退出;
  3. C:\myprogram\sync\ 中删除除 (testtest3test2 之外的所有文件和文件夹>)
  4. C:\myprogram\html\data.sql复制到C:\myprogram\sync\
  5. 使用选项 sync.bat myprogram.ini 调用其他批处理文件。

如果是在 Bash 环境下对我来说很容易,但我不知道如何测试文件或文件夹是否存在以及它是否是文件或文件夹。

最佳答案

您可以使用 IF EXIST 检查文件:

IF EXIST "filename" (
  REM Do one thing
) ELSE (
  REM Do another thing
)

如果你不需要“else”,你可以这样做:

set __myVariable=
IF EXIST "C:\folder with space\myfile.txt" set __myVariable=C:\folder with space\myfile.txt
IF EXIST "C:\some other folder with space\myfile.txt" set __myVariable=C:\some other folder with space\myfile.txt
set __myVariable=

这是一个搜索文件或文件夹的工作示例:

REM setup

echo "some text" > filename
mkdir "foldername"

REM finds file    

IF EXIST "filename" (
  ECHO file filename exists
) ELSE (
  ECHO file filename does not exist
)

REM does not find file

IF EXIST "filename2.txt" (
  ECHO file filename2.txt exists
) ELSE (
  ECHO file filename2.txt does not exist
)

REM folders must have a trailing backslash    

REM finds folder

IF EXIST "foldername\" (
  ECHO folder foldername exists
) ELSE (
  ECHO folder foldername does not exist
)

REM does not find folder

IF EXIST "filename\" (
  ECHO folder filename exists
) ELSE (
  ECHO folder filename does not exist
)

关于windows - 如何验证文件是否存在于批处理文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022176/

相关文章:

c# - 批处理文件启动应用程序并传递多个参数将空格切换为á

c - Windows下如何获取ip地址

windows - 报告计算机说明或不使用WMIC

linux - 如何从 Visual Studio 终端中删除组件?

SVN 命令创建包含内容的远程文件夹和文件

windows - 如何用另一个 .exe 包装对 .exe(带参数)的调用?

c++ - 以编程方式确定网卡在 Windows 上是集成的还是独立的

c++ - CreateEnvironmentBlock 使服务崩溃

javascript - 无需 F12 工具即可在 Internet Explorer 上恢复 javascript 日志和错误

windows - 在 CMD 批处理脚本中调用标签时如何使用超过 9 个参数?