如果存在则添加到现有的批处理文件
Adding if exist to an existing batch file
我正在尝试向现有的批处理文件添加额外的功能,下面的代码片段将我的数据从一个位置复制到另一个位置,然后删除创建的 zip 文件,一切正常。
我想做的是,如果文件已经存在于 USB 驱动器上,则在文件末尾添加一个递增数字,例如。 FileName-FileDate(1) 或 FileName-FileDate(2) 我可以将时间添加到 FileStamp,它现在添加了日期,但这可能会使文件名有点长。
我正在将文件复制到 USB 驱动器作为备份,这就是我使用驱动器 E、F、G、H 的原因,这取决于 Windows 对驱动器的看法,这也很重要由于 space.
在 C: 驱动器上创建的文件被删除
我使用 /y 来减少用户输入,因为这将由技术技能有限的人来完成,所以我真的不想使用 /-y。而且机器没有键盘,只有触摸屏,所以重命名文件不是一件容易的事。
REM ------ Creation of the ZIP file ------
%SupervisorPath%-ZipPortable\App-Zipz a -tzip %BackupPath%\Backup\%FileStamp%.zip %BackupPath%\Backup\
REM ------ Copy the backup file to a USB drive with File Name and Date Stamp ------
IF EXIST E: (echo copying files to USB drive E:
copy %BackupPath%\Backup\%FileStamp%.zip E: /y )
IF EXIST F: (echo copying files to USB drive F:
copy %BackupPath%\Backup\%FileStamp%.zip F: /y )
IF EXIST G: (echo copying files to USB drive G:
copy %BackupPath%\Backup\%FileStamp%.zip G: /y )
IF EXIST H: (echo copying files to USB drive H:
copy %BackupPath%\Backup\%FileStamp%.zip H: /y )
REM ------ Delete the temporary zip file from the backup folder ------
echo Deleting temporary zip file from the backup folder
Del %BackupPath%\Backup\%FileStamp%.zip
IF EXIST 对驱动器号和目录不起作用,但幸运的是,有一个晦涩的解决方法:
C:\> IF NOT EXIST D:\NUL ECHO D:\ not present.
D:\ not present.
C:\> IF EXIST C:\NUL ECHO C:\ exists.
C:\ exists.
事实证明,为了支持在命令语句中附加>NUL
等结构,在包括驱动器根目录在内的每个目录中都有一种名为"NUL" 的虚拟文件。检查其存在等同于检查目录或驱动器是否存在。
Microsoft 知识库文章 (https://support.microsoft.com/en-us/kb/65994) 中记录了此行为,我已确认其在 FreeDOS 1.1 和 Windows 7 命令中的行为 shell.
虽然知识库文章解决了检查目录是否存在的问题,但它也表明该技术可用于查看驱动器是否存在。但是,在检查驱动器是否存在的情况下,存在警告:
如果驱动器未格式化,则会出现 Abort, Retry, Fail?
错误。
使用此技术检查驱动器是否存在取决于设备驱动程序的实现,可能并不总是有效。
我正在尝试向现有的批处理文件添加额外的功能,下面的代码片段将我的数据从一个位置复制到另一个位置,然后删除创建的 zip 文件,一切正常。
我想做的是,如果文件已经存在于 USB 驱动器上,则在文件末尾添加一个递增数字,例如。 FileName-FileDate(1) 或 FileName-FileDate(2) 我可以将时间添加到 FileStamp,它现在添加了日期,但这可能会使文件名有点长。
我正在将文件复制到 USB 驱动器作为备份,这就是我使用驱动器 E、F、G、H 的原因,这取决于 Windows 对驱动器的看法,这也很重要由于 space.
在 C: 驱动器上创建的文件被删除我使用 /y 来减少用户输入,因为这将由技术技能有限的人来完成,所以我真的不想使用 /-y。而且机器没有键盘,只有触摸屏,所以重命名文件不是一件容易的事。
REM ------ Creation of the ZIP file ------
%SupervisorPath%-ZipPortable\App-Zipz a -tzip %BackupPath%\Backup\%FileStamp%.zip %BackupPath%\Backup\
REM ------ Copy the backup file to a USB drive with File Name and Date Stamp ------
IF EXIST E: (echo copying files to USB drive E:
copy %BackupPath%\Backup\%FileStamp%.zip E: /y )
IF EXIST F: (echo copying files to USB drive F:
copy %BackupPath%\Backup\%FileStamp%.zip F: /y )
IF EXIST G: (echo copying files to USB drive G:
copy %BackupPath%\Backup\%FileStamp%.zip G: /y )
IF EXIST H: (echo copying files to USB drive H:
copy %BackupPath%\Backup\%FileStamp%.zip H: /y )
REM ------ Delete the temporary zip file from the backup folder ------
echo Deleting temporary zip file from the backup folder
Del %BackupPath%\Backup\%FileStamp%.zip
IF EXIST 对驱动器号和目录不起作用,但幸运的是,有一个晦涩的解决方法:
C:\> IF NOT EXIST D:\NUL ECHO D:\ not present.
D:\ not present.
C:\> IF EXIST C:\NUL ECHO C:\ exists.
C:\ exists.
事实证明,为了支持在命令语句中附加>NUL
等结构,在包括驱动器根目录在内的每个目录中都有一种名为"NUL" 的虚拟文件。检查其存在等同于检查目录或驱动器是否存在。
Microsoft 知识库文章 (https://support.microsoft.com/en-us/kb/65994) 中记录了此行为,我已确认其在 FreeDOS 1.1 和 Windows 7 命令中的行为 shell.
虽然知识库文章解决了检查目录是否存在的问题,但它也表明该技术可用于查看驱动器是否存在。但是,在检查驱动器是否存在的情况下,存在警告:
如果驱动器未格式化,则会出现
Abort, Retry, Fail?
错误。使用此技术检查驱动器是否存在取决于设备驱动程序的实现,可能并不总是有效。