2015-07-02 81 views
0

我在這中有數以百計的壓縮文件夾中也有許多文件it.for例子中的目錄文件夾,如何壓縮文件夾名稱中的所有文件附加在它裏面的批處理文件

文件夾
cs2-20150613-6014-0000- 的.zip
cs2-20150613-abc.bin
cs2-20150613-xyz.bin

cs2-20150614-6014-0000- .ZIP
cs2-20150614-abc.bin
cs2-20150614-xyz.bin

我想解壓後的文件夾名稱的最後6位數字附加到的所有文件,
cs2-20150613- abc.bin-
cs2-20150613-xyz.bin-

任何人都可以建議我如何能在批處理文件來完成

回答

0
@echo off 

for /F "tokens=1,2,5 delims=-." %%a in ('dir /B *.zip') do (
    ren %%a-%%b-*.bin %%a-%%b-*.bin.%%c 
) 

此代碼假定顯示的格式是固定的:cs2-YYYYMMDD-xxxx-xxxx-######.zip。如果這種格式可能改變,則需要調整代碼。

0

這裏有一個簡短的腳本,我寫了應該做的,你需要什麼

@echo off & setlocal enabledelayedexpansion 

for %%a in (*.zip) do (
    7z x -o"%temp%\%%~na" "%%a" > Nul <&2 
    set "suffix=%%~na" 
    set "suffix=!suffix:~-6!" 
    for %%b in (%temp%\%%~na\*) do move /Y "%%b" "%cd%\%%~nxb-!suffix!" > Nul <&2 
    rd /s /q "%temp%\%%~na" 
) 

它需要你你提取壓縮文件夾.zip路徑上有7z

後綴添加它提取的文件總是在.zip文件的擴展名之前的6個字符,忽略天氣或不是數字。


此代碼利用成語> Nul <&2到所有輸出(stdoutstderr)重定向到Nul文件,有效地沉默該程序。

+0

非常感謝你!這就是我所需要的:)你能告訴我爲什麼%%〜fb和> Nul <&2用於? – Siri

+0

@Siri'> Nul <&2'用於將命令的'stdout'和'stderr'重定向到'Nul'。這意味着該命令不再向控制檯輸出任何內容。回想起來,'%%〜fb'沒有做任何事情。這是完全限定路徑名稱的可變擴展,但在這種情況下,變量已經是完全限定的路徑名​​稱。 –

+0

謝謝你:)我有另一個要求,我想提取以77結尾的壓縮文件夾,即#### 77。假設文件夾名稱是cs2-20150613-6014-0000-201077,我希望文件爲cs2-20150613-abc.bin-201077 cs2-20150613-xyz.bin-201077,我這樣做,設置「suffix_77 =!後綴: 〜4!」如果!suffix_77! == 77(for %% b in(%temp%\ %%〜na *)do move/Y「%% b」「%cd%\ %%〜nxb-!suffix!」> Nul <&2 rd/s/q「%temp%\ %%〜na」)但這不起作用。 – Siri

相關問題