为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

莫回无 2019-10-28 10:43:32

我要创建一个.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. 使用option调用其他批处理文件sync.bat myprogram.ini

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


查看完整描述

3 回答

?
MMMHUHU

您可以使用是否存在来检查文件:


IF EXIST "filename" (

  REM Do one thing

) ELSE (

  REM Do another thing

)

如果你不需要一个“其他”,你可以这样做:


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

)


查看完整回答
反对 回复 2019-10-28
?
明月笑刀无情

输入IF /?要获得有关的帮助,它清楚地说明了如何使用IF EXIST。


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


最后复制只是意味着可以调用COPY并调用另一个bat文件,如下所示:


MYOTHERBATFILE.BAT sync.bat myprogram.ini


查看完整回答
反对 回复 2019-10-28
?
慕标琳琳

这是一个有关文件存在或不存在时如何执行命令的好例子:


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:m-d-y     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调用其他批处理文件。


我不确定您的意思是什么,但是如果您只想打开这两个文件,只需将文件的路径放在


Path/sync.bat

Path/myprogram.ini

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


您正在使用批处理文件。前面提到过,您必须创建一个.bat文件才能使用此文件:


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


查看完整回答
反对 回复 2019-10-28

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信