2015-02-05 58 views
1

我想創建一個批處理文件,將外部設備中的文件複製到特定文件夾中,但我希望它從所有外部設備複製並且不具有爲每個設備定義一個字母變量。 這是我的兩個選項:將文件從外部設備複製到特定文件夾的批處理文件

@echo off 
cls&echo 0 
md c:\system 
xcopy %~d0 c:\system /S /I /C 
exit 

@echo off 
md c:\system 
xcopy D: c:\system /s 
xcopy E: c:\system /s 
xcopy G: c:\system /s 
xcopy F: c:\system /s 
exit 

在第二個我將不得不指定所有設備變量(不想要的)

我發現%~d0會使文件複製到任何設備連接,但它只複製批處理文件夾中的文件。

+0

你要的伎倆還是不要找字母驅動器,當你例如插一個USB密鑰? – Hackoo 2015-02-05 17:06:57

+0

@Hackoo是的,正好 – Abrelaboca 2015-02-05 17:10:20

回答

2

好吧,只需插入您的USB密鑰,並嘗試這個代碼,並讓我知道這是否有訣竅或不?

@echo off 
Mode con cols=98 lines=10 & Color 9E 
Title Searching the Drive letter of your USB Key by Hackoo 2015 
set TargetFolder=c:\system 
if not exist %TargetFolder% MD %TargetFolder% 
echo. 
ECHO ******************************************************************************************* 
echo. 
echo       Searching the drive letter of your USB Key ....... 
echo. 
ECHO ******************************************************************************************* 
wmic logicaldisk get DeviceID,DriveType /Format:CSV > %Tmp%\tmp.txt 
for /f "skip=2 tokens=1-3 delims=," %%a in ('%COMSPEC% /a /c type "%Tmp%\tmp.txt"') do echo %%b %%c >> %Tmp%\tmp2.txt 
for /f "tokens=1" %%i in ('%COMSPEC% /a /c type "%Tmp%\tmp2.txt" ^|Find "2"') Do (set MyUSBDrive=%%i) 
Del %Tmp%\tmp.txt & Del %Tmp%\tmp2.txt 
cls 
echo. 
ECHO ******************************************************************************************* 
echo. 
echo       The drive letter of your USB Key is %MyUSBDrive% 
echo. 
ECHO ******************************************************************************************* 
pause 
cls 
xcopy %MyUSBDrive% %TargetFolder% /S /I /C 
pause 
+0

謝謝你的努力,但是當我運行它時,它說%MyUSBDrive%是K:當它是G :.當我運行wmic邏輯磁盤時,我得到了C:,D:和E:作爲硬件和G:,H:,I:,J:和K:作爲外部設備,可能需要K:因爲它是最後一個?不知道 – Abrelaboca 2015-02-05 21:49:50

2

用於與wmic logicaldisk命令循環使用,讓您的驅動器的列表,然後你就可以運行爲每個驅動器的xcopy命令。

例子:

for /f "skip=1" %%b IN ('wmic logicaldisk where drivetype^=2 get deviceid') DO xcopy %%b c:\system /s 

注:本例看起來只對可移動驅動器(where devicetype^=2),這裏是從上面的鏈接devicetypes定義,你可以修改WMIC命令的語法只返回驅動器你想,如果你希望它返回所有驅動器只是刪除where devicetype^=2

  • 0 = 未知
  • 1 = 否根目錄
  • 2 = 可移動磁盤
  • 3 = 本地磁盤
  • 4 = 網絡驅動器
  • 5 = 光盤
  • 6 = RAM Disk

希望這有助於。

+0

非常感謝你爲我工作,雖然我評論說我有5個可移動設備,因爲我只有一個連接它顯示一個窗口,當它沒有找到其餘的驅動器。無論如何,這項工作沒有問題。 – Abrelaboca 2015-02-05 21:51:35

0

我提高一點我最後的代碼來獲取所有連接的外部設備 檢查它,讓我知道,如果這後來才

@echo off 
Title The copy of all your connected external devices by Hackoo 
Mode con cols=100 lines=20 & Color 9E 
setlocal ENABLEDELAYEDEXPANSION 
set TargetFolder=C:\TestCopy 
wmic LOGICALDISK where driveType=2 get deviceID > wmic.txt 
for /f "skip=1" %%b IN ('type wmic.txt') DO (
XCopy %%b\* !TargetFolder!\ /dsicfy) 
Del wmic.txt 
pause 
相關問題