2015-02-20 2 views
0

Как перенести файл на USB-накопитель, который имеет переменный диапазон букв диска, в зависимости от машины, это может быть диск E, F, G или H, в Windows Embedded XP установлен только один USB-накопитель, поэтому он может перемещаться только в том случае, если он установлен, я могу создать файл, и он перемещается в Windows 7, но не в Windows Embedded XP, каковы различия в параметрах, доступных для этого в XP, сценарий будет использоваться только на машинах XP.Переместить файл в сменное место на диске, если оно установлено «для диапазона» в XP

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

%SupervisorPath%\7-ZipPortable\App\7-Zip\7z a -tzip %BackupPath%\Backup\%FileStamp%.zip %BackupPath%\Backup\ 

REM ------ Move the backup file to a USB drive with File Name and Date Stamp ------ 

for %%A in (E F G H) do if exist %%A: (
    echo Moving files to USB drive %%A: 
    move /y "%BackupPath%\Backup\%FileStamp%.zip" %%A: >nul && (
    echo Files moved to USB drive successfully 
    goto :break 
) 
) 
:break 

Могу ли я создать сообщение об ошибке, если файл не перемещается, а затем удалить файл, так как он занимает ценное место на диске?

ответ

0

Вот решение, которое я использую. Существует требование, чтобы USB-накопитель был назван, и вы его знаете. Так что давайте говорить ваш USB называется «8GB»

Если вы выполните следующую команду:

wmic logicaldisk list brief 

Вы получите список ваших дисков, включая VolumeName.

Используя этот список, вы можете пропустить его в команду Find, как так:

wmic logicaldisk list brief | find "8GB" 

который будет возвращать всю информацию о вашем диске с VolumeName 8GB. Это будет выглядеть примерно так.

C:\>wmic LOGICALDISK LIST BRIEF | FIND "8GB" 
F:  2   3080192          8082407424  8GB 

Теперь с помощью этой команды мы можем использовать ее и перенаправить свой вывод в файл. Вот так.

wmic logicaldisk list brief | find "8GB" > C:\tmp\usbdriveinfo.txt 

После того, как информация, которую мы хотим хранился мы можем прочитать его обратно в переменную с помощью:

set /p driveLetter=C:\tmp\usbdriveinfo.txt 

Теперь, когда переменная имеет всю строку, но мы только хотим, чтобы буква диска, поэтому мы укоротить как так:

set driveLetter=%driveLetter:~-,2% 

Теперь переменная DriveLetter содержит только ваше букву "F:"

Итак, если вы хотите все это вместе:

wmic logicaldisk list brief | find "8GB" > C:\tmp\usbdriveinfo.txt 
set /p driveLetter=C:\tmp\usbdriveinfo.txt 
set driveLetter=%driveLetter:~-,2% 

Что касается проверки того, не удалась ли команда перемещения. Если какая-либо команда не движение включено они устанавливают переменную ErrorLevel некоторое значение, отличное от 0 (0 для успешного выполнения) Поэтому все, что вам нужно сделать, если добавить оператор после команды перемещения, как:

if %errorlevel% GTR 0 del %BackupPath%\Backup\%FileStamp%.zip 
+0

Благодарность за ответ, но код зависит от моего использования одного и того же USB-накопителя, а все остальные также используют один и тот же диск, который никогда не будет иметь места, командный файл - это программное обеспечение для резервного копирования, поэтому все, что мы делаем, это вставить любую карту и нажать на нее, сценарий затем видит карту и перемещает файл к ней, просто так, только одна карта будет подключена, поэтому она будет только на карту, которая находится, но если клавиатура установлена, то буква диска не всегда будет F , поэтому необходимость использования (FGHI), вышеприведенный скрипт, который я использую, идеально подходит для Windows 7, но мне это нужно для Windows XP, поскольку он не работает – user396581

+0

Понятно, что вы можете использовать один и тот же процесс, используя разные значения для команды Find. Сначала, если вы знаете размер USB-накопителя, вы можете использовать «Найти« DriveSize в байтах ».Другой способ был бы, если в машину подключен только один USB-накопитель, тогда вы можете позволить найти поиск 2, который является типом привода. 2 означает съемный диск. Числа типа привода являются 0 = Unknown 1 = Нет корневой каталог 2 = Съемного диск 3 = Локальный диск 4 = сетевой диск 5 = Компакт-диск 6 = RAM диск –

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