2016-08-08 16 views
1

我有一個目錄F:\Input與其中的各種子文件夾。如何搜索具有特定命名約定的文件夾並將它們與其內容一起復制到其他位置?

我需要專門複製具有相同命名約定的文件夾,如India.zipIndia09876.zip等。這些文件夾名稱中的文件夾名稱不是特殊的.zip,而不是ZIP文件!

我需要將這些文件夾及其內容(子文件夾和文件)複製到不同的位置。

CD /D F:\Input\ 
FOR /f "tokens=*" %%I in ('dir /s /b /a:d "India*"') do echo|xcopy "%%I" "E:\output\" /s 

這是我現在的代碼拷貝的內容,但不是主要的文件夾India.zip。的F:\Input

文件夾結構:

  • 國家
    • 狀態
        • OP 1
          • QWERTY
            • India09876.zip(文件夾,而不是壓縮)
              • 31君2016
                • 個XML和PDF文件
                • vcxz
                  • 03-Aug-2016.zip (文件,壓縮)
        • 運算1
          • India1234。拉鍊(文件夾,未壓縮)
            • 31軍-2016
              • XML和PDF文件
              • vcxz
                • 04-Aug-2016.zip (文件,壓縮)

India*.zip將在第來講是唯一的。

無法重命名。請提供的解決方案進行復制如下:

文件夾E:\Output批量執行後應包含以下內容:

  • India09876.zip
    • 31軍-2016
      • XML和PDF文件
      • vcxz
        • 03-Aug-2016.zip
  • India1234.zip
    • 31君2016
      • 個XML和PDF文件
      • vcxz
        • 04-Aug-2016.zip
+0

[Forfiles](http://ss64.com/nt/forfiles.html)也可能有用。 – Tim

回答

0

India*.zip目錄名稱必須在目標路徑中也規定和應使用命令的一些更多選項XCOPY應與一樣使用也會自動創建目標文件夾。

@echo off 
for /F "delims=" %%I in ('dir "F:\Input\India*.zip" /A:D /B /S 2^>nul') do xcopy "%%I" "E:\Output\%%~nxI\" /C /H /I /K /Q /R /S /Y >nul 

這將是很容易通過使用以去除在複製過程中的文件夾名稱不同尋常.zip

@echo off 
for /F "delims=" %%I in ('dir "F:\Input\India*.zip" /A:D /B /S 2^>nul') do xcopy "%%I" "E:\Output\%%~nI\" /C /H /I /K /Q /R /S /Y >nul 

%%~nI代替%%~nxI擺脫擺脫「文件擴展名」的文件夾名稱。

爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。

  • dir /?
  • echo /?
  • for /?
  • xcopy /?

而且還讀的>nul解釋微軟的文章關於Using command redirection operators

2^>nul2>nul與重定向操作>逃脫^對命令的執行應用2>nulDIR而不是解釋關於解析FOR命令行,這將導致在批量處理的出口,因爲語法的重定向錯誤。

2>nul通過DIR使用上的DIR導致重定向可能的錯誤消息輸出到執行STDERR 設備NUL抑制它。命令DIR如果找不到與文件夾名稱通配符模式India*.zip匹配的任何文件夾,則會向標準錯誤流輸出令人困惑的錯誤消息File not found

相關問題