2013-11-04 75 views
0

有沒有一種方法從命令行復制一個文件夾,我只知道其名稱的一部分,並命名新文件夾基於第一個?然後壓縮它。批量複製文件夾與部分名稱的來源

例如。

xcopy "c:\sys\my-folder-web-1.1" "c:\temp\my-folder-1.1.web" /E /H /I 
7z.exe a -r "c:\end\my-folder.7z" "c:\temp\my-folder-1.1.web" 

基本上我想使用的名稱的一部分,並把它放在文件夾的末尾(如擴展 - 名.web) 我想要做一個批處理文件,動態作品,因此「1.1」可能是1.2等,但「網絡」部分始終是相同的,如:

original folder  -> result folder 
my-folder-web-1.1  -> my-folder-1.1.web 
my-folder-web-1.2  -> my-folder-1.2.web 
my-folder-web-5.1  -> my-folder-5.1.web 
my-folder-web-67.1XPTO -> my-folder-67.1XPTO.web 

將不會有任何輸入參數,因爲該批次將用這種語法的任何文件夾的工作。

任何幫助?

+0

你在這裏有什麼輸入參數?路徑「c:\ sys \ my-folder-web-1.1」? – pmod

+0

更新了問題。 –

回答

0

我們可以利用DIR PATH *膨脹這裏:

@echo off 
set INPUT_PATH="c:\sys\my-folder-web-" 
for /f "delims=" %%G IN ('DIR %INPUT_PATH%* /A:D /B') DO (
    xcopy "%%~fG" c:\temp\"%%~nG.web" /E /H /I 
    rem work with c:\temp\"%%~nG.web" here 
) 
echo Done! 

注意,基於路徑波浪取代可以只適用於片面的變量,即以命令行輸入和循環變量。閱讀更多關於代字號替換here

0
@ECHO OFF 
SETLOCAL 
FOR /f %%q IN ('dir /b /ad u:\sys\*-*-web-*.*') DO (
FOR /f "tokens=1-3*delims=-" %%a IN ("%%q") DO (
    ECHO xcopy "%~1" "u:\temp\%%~nxa-%%b-%%d.web" /E /H /I 
    ECHO 7z.exe a -r "u:\end\%%~nxa-%%b.7z" "u:\temp\%%~nxa-%%b-%%d.web" 
) 
) 
GOTO :EOF 

這是一個開始。不太確定你的格式實際上是什麼。我在我的U:驅動器上實現了它,並簡單地使用ECHO編寫了構建的命令。

相關問題