Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 已成功复制到USB驱动器(如果存在)_Batch File_Copy_Usb_Windows Xp_Windows Xp Embedded - Fatal编程技术网

Batch file 已成功复制到USB驱动器(如果存在)

Batch file 已成功复制到USB驱动器(如果存在),batch-file,copy,usb,windows-xp,windows-xp-embedded,Batch File,Copy,Usb,Windows Xp,Windows Xp Embedded,我有一个简单的批处理文件,用于Windows XP计算机,它将文件复制到E、F、G或H上的USB驱动器,所有这些文件都可以正常工作,但我希望确认文件已通过文本消息“文件成功复制到USB驱动器”传输到驱动器中,“最好的方法是什么?” REM ------ Creation of the ZIP file ------ %SupervisorPath%\7-ZipPortable\App\7-Zip\7z a -tzip %BackupPath%\Backup\%FileStamp%.zip %B

我有一个简单的批处理文件,用于Windows XP计算机,它将文件复制到E、F、G或H上的USB驱动器,所有这些文件都可以正常工作,但我希望确认文件已通过文本消息“文件成功复制到USB驱动器”传输到驱动器中,“最好的方法是什么?”

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
文件的新部分如下所示,但它不会移动文件

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 %%D in (E F G H) do if exist %%D: (
  echo Moving files to USB drive %%D:
  move /y "%BackupPath%\Backup\%FileStamp%.zip" %%D: >nul && (
    echo Files moved to USB drive successfully
    goto :break
  )
)
:break

您可以使用
&&
操作符在成功后有条件地执行命令

for %%D in (E F G H) do if exist %%D: (
  echo copying files to USB drive %%D:
  copy /y "%BackupPath%\Backup\%FileStamp%.zip" %%D: >nul && echo Files copied to USB drive successfully
)
echo Deleting temporary zip file from the backup folder
del "%BackupPath%\Backup\%FileStamp%.zip"
我怀疑您只有一个USB驱动器,并且您不确定分配给哪个驱动器号。在这种情况下,可以使用MOVE而不是COPY后跟DEL,并且可以在成功后中止循环

for %%D in (E F G H) do if exist %%D: (
  echo Moving files to USB drive %%D:
  move /y "%BackupPath%\Backup\%FileStamp%.zip" %%D: >nul && (
    echo Files moved to USB drive successfully
    goto :break
  )
)
:break
|
操作符在失败时有条件地执行命令。如果同时使用
&&
| |
,则
|
应遵循
&&

someCommand && (
  commandToRunIfSuccess
) || (
  commandToRunIfError
)
如果成功块中的最后一个命令失败,那么它将触发后续的错误块。因此,如果最后一个命令可能失败,那么您应该添加另一个保证成功的命令。保证成功的最简单(也是最快)的命令是
(call)
。注意,有一个所需的空间

someCommand && (
  commandToRunIfSuccess
  someCommandThatMayFail
  (call )
) || (
  commandToRunIfError
)

感谢您的快速回复,是的,我只有1个USB驱动器,但是如果我插入了键盘和鼠标,那么我不知道驱动器号,移动选项会很好,我明天会尝试一下,谢谢我已经安装了批处理文件,带有修改过的move命令,但它不移动文件,它确实创建了文件,但没有移动,我还没有把删除行放进去只是为了看看发生了什么,所以我知道它正在被创建。它似乎在我的Windows 7计算机上对我有效,但在我为之编写的Windows XP计算机上不起作用?我不确定是否需要在旧版本的Windows上运行其他命令?