2015-12-01 3 views
0

Я пытаюсь добавить дополнительные функции к существующему пакетному файлу, приведенный ниже фрагмент кода копирует мои данные из одного места в другое, а затем удаляет созданный zip-файл, все работает хорошо ,Добавление, если существует существующий пакетный файл

что я хочу сделать, если файл уже существует на USB-накопителе, чтобы добавить инкрементный номер в конец файла, например. FileName-FileDate (1) или FileName-FileDate (2) Я могу добавить время к файловому файлу, который на данный момент добавляет дату, но это может сделать имя файла немного длиннее.

Я копирую файл на USB-накопитель в качестве резервной копии, поэтому я использую диски E, F, G, H, зависящие от того, что Windows видит в качестве диска, также важно, чтобы созданный файл диск C: удаляется из-за пробела.

Я использую/y, чтобы уменьшить ввод пользователя, поскольку это будет сделано людьми с ограниченными технологическими навыками, поэтому я действительно не хочу использовать/-y. также на машине нет клавиатуры, только сенсорный экран, поэтому переименование файла - непростая задача.

REM ------ Creation of the ZIP file ------ 

%SupervisorPath%\7-ZipPortable\App\7-Zip\7z 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 
+3

Возможный дубликат [Как скопировать (и прирост) Несколько экземпляров файла с помощью пакетного файла] (http://stackoverflow.com/questions/28697436/how-to-copy-and-increment-multiple -instances-of-a-file-using-batch-file) – JosefZ

+0

Вышеупомянутый ответ не работает в системе Windows XP Embedded, которую я использую – user396581

ответ

1

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.

Несмотря на то, что статья КБ рассматривает проверку существования справочника, она также указывает, что метод может использоваться, чтобы увидеть, присутствует ли привод. В случае проверки диска существования, однако, существуют предостережения:

  • Abort, Retry, Fail? ошибка возникает, если диск не отформатирован.

  • Использование этой технологии для проверки существования накопителя зависит от реализации драйвера устройства и может не всегда работать.

Смежные вопросы