通过键盘输入要备份的驱动器
Enter drives for backup via keyboard
我想做的是通过 cmd
命令进行备份,但问题是当我将 USB 备份到另一台 PC 进行备份时,驱动器名称不同。
例如当我这样做时:
XCOPY G:\*.BMP X:\ /h/i/c/k/e/y/r/d
在另一台计算机上,驱动器将不是 G
和 X
。
我想要做的是,是否可以制作一个程序,我可以用键盘输入我要备份的驱动器以及备份到哪个驱动器。
例如:
XCOPY "driver name keyboard input":\*.BMP "driver name keyboard input":/" /h/i/c/k/e/y/r/d
是的,可以使用 PowerShell 或 batch-file 脚本(cmd
标签似乎暗示 Windows OS).
我们选择后者吧。下一个 batch-file
代码片段将执行与相关命令相同的操作:XCOPY G:*.BMP X:\ /h/i/c/k/e/y/r/d
:
set "DriveIn=G"
set "DriveOu=X"
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
而不是硬编码 DriveIn
和 DriveOu
set /P "DriveIn=please choose SOURCE drive letter "
set /P "DriveOu=please choose TARGET drive letter "
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
提示(必要!)有效性检查:
:dfromscratch
set "DriveIn="
set "DriveOu="
:dsource
set /P "DriveIn=please choose SOURCE drive letter "
rem basic validity check
if not defined DriveIn goto :dsource
if not exist "%DriveIn%:\" goto :dsource
:dtarget
set /P "DriveOu=please choose TARGET drive letter "
rem basic validity check
if not defined DriveOu goto :dtarget
if not exist "%DriveOu%:\" goto :dtarget
if /I "%DriveIn%"=="%DriveOu%" goto :dfromscratch
rem involve more validity check here!!!
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
关于(更多)有效性检查的一些提示。
显示可用的磁盘驱动器:
wmic logicaldisk get Description, DeviceID, DriveType, FileSystem, VolumeName
要获取可用磁盘驱动器的列表,请使用 for /F
loop(在批处理脚本中注意 %%G
):
for /F %%G in ('
wmic logicaldisk where "DriveType != 5" get DeviceID^, DriveType^|find ":"
') do echo %%G
或下一篇文章(注意 cmd
中的 %G
):复制&粘贴到打开的cmd
window:
for /F %G in ('wmic logicaldisk where "DriveType != 5" get DeviceID^, DriveType^|find ":"') do @echo %G
另一种方法(只是草稿,需要更多阐述):构建可用驱动器盘符列表 %drives%
并使用 choice
command 而不是 set /P
:
set "drives=GX"
choice /C %drives% /M "Select SOURCE drive letter"
我想做的是通过 cmd
命令进行备份,但问题是当我将 USB 备份到另一台 PC 进行备份时,驱动器名称不同。
例如当我这样做时:
XCOPY G:\*.BMP X:\ /h/i/c/k/e/y/r/d
在另一台计算机上,驱动器将不是 G
和 X
。
我想要做的是,是否可以制作一个程序,我可以用键盘输入我要备份的驱动器以及备份到哪个驱动器。
例如:
XCOPY "driver name keyboard input":\*.BMP "driver name keyboard input":/" /h/i/c/k/e/y/r/d
是的,可以使用 PowerShell 或 batch-file 脚本(cmd
标签似乎暗示 Windows OS).
我们选择后者吧。下一个 batch-file
代码片段将执行与相关命令相同的操作:XCOPY G:*.BMP X:\ /h/i/c/k/e/y/r/d
:
set "DriveIn=G"
set "DriveOu=X"
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
而不是硬编码 DriveIn
和 DriveOu
set /P "DriveIn=please choose SOURCE drive letter "
set /P "DriveOu=please choose TARGET drive letter "
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
提示(必要!)有效性检查:
:dfromscratch
set "DriveIn="
set "DriveOu="
:dsource
set /P "DriveIn=please choose SOURCE drive letter "
rem basic validity check
if not defined DriveIn goto :dsource
if not exist "%DriveIn%:\" goto :dsource
:dtarget
set /P "DriveOu=please choose TARGET drive letter "
rem basic validity check
if not defined DriveOu goto :dtarget
if not exist "%DriveOu%:\" goto :dtarget
if /I "%DriveIn%"=="%DriveOu%" goto :dfromscratch
rem involve more validity check here!!!
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
关于(更多)有效性检查的一些提示。
显示可用的磁盘驱动器:
wmic logicaldisk get Description, DeviceID, DriveType, FileSystem, VolumeName
要获取可用磁盘驱动器的列表,请使用 for /F
loop(在批处理脚本中注意 %%G
):
for /F %%G in ('
wmic logicaldisk where "DriveType != 5" get DeviceID^, DriveType^|find ":"
') do echo %%G
或下一篇文章(注意 cmd
中的 %G
):复制&粘贴到打开的cmd
window:
for /F %G in ('wmic logicaldisk where "DriveType != 5" get DeviceID^, DriveType^|find ":"') do @echo %G
另一种方法(只是草稿,需要更多阐述):构建可用驱动器盘符列表 %drives%
并使用 choice
command 而不是 set /P
:
set "drives=GX"
choice /C %drives% /M "Select SOURCE drive letter"