如何validation文件是否存在于DOS(Windows命令提示符).BAT文件中?

我必须创build一个.BAT文件这样做:

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

如果是在Bash环境中,对我来说很简单,但我不知道如何testing一个文件或文件夹是否存在,以及它是否是一个文件或文件夹。

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

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

如果您想查找驱动器或目录,请参阅http://support.microsoft.com/kb/65994中的示例;

键入IF /? 要获得关于if的帮助,它清楚地解释了如何使用IF EXIST。

要删除除了某些文件夹以外的完整树,请参阅此问题的答案: Windows批处理脚本删除除一个以外的文件夹中的所有内容

最后复制只是意味着调用COPY并调用另一个bat文件可以这样做:

 MYOTHERBATFILE.BAT sync.bat myprogram.ini 

如果文件存在或不存在,下面是一个很好的例子:

 if exist C:\myprogram\sync\data.handler echo Now Exiting && Exit if not exist C:\myprogram\html\data.sql Exit 

我们将把这三个文件放在一个临时的地方。 删除文件夹后,将恢复这三个文件。

 xcopy "test" "C:\temp" xcopy "test2" "C:\temp" del C:\myprogram\sync\ xcopy "C:\temp" "test" xcopy "C:\temp" "test2" del "c:\temp" 

使用XCOPY命令:

 xcopy "C:\myprogram\html\data.sql" /c /d /h /e /i /y "C:\myprogram\sync\" 

我将解释/c /d /h /e /i /y含义:

  /C Continues copying even if errors occur. /D:mdy Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time. /H Copies hidden and system files also. /E Copies directories and subdirectories, including empty ones. Same as /S /E. May be used to modify /T. /T Creates directory structure, but does not copy files. Does not include empty directories or subdirectories. /T /E includes /I If destination does not exist and copying more than one file, assumes that destination must be a directory. /Y Suppresses prompting to confirm you want to overwrite an existing destination file. `To see all the commands type`xcopy /? in cmd 

使用选项sync.bat myprogram.ini调用其他batch file。

我不确定这是什么意思,但如果你只是想打开这两个文件,你只需要把文件的path

 Path/sync.bat Path/myprogram.ini 

如果是在Bash环境中,对我来说很简单,但我不知道如何testing一个文件或文件夹是否存在,以及它是否是一个文件或文件夹。

您正在使用batch file。 你之前提到你必须创build一个.bat文件来使用这个:

我必须创build一个.BAT文件这样做: