2013-10-14 35 views
0

我試圖從IE的緩存文件夾中複製css文件到C: 某些文件夾事情是很多重複的,但我想保留他們所有,所以我做了一個批處理腳本來複制所有的css文件,並在每個文件的開頭添加一個計數器/索引變量。問題是變量不增加,我不知道爲什麼?這是我的腳本:批處理腳本for循環,變量不遞增,需要複製/重命名重複文件

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set /a c=0 
for /f "tokens=*" %%A in ('dir /b /s /a-d "C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\*.css"') do (
set /a c=c+1 
copy "%%A" "C:\Target\%c%_%%~nxA" 
) 
endlocal 

除了一些30 CSS文件被複制(我知道這個因爲我可以看到他們在IE瀏覽器的緩存文件夾)即時得到大約只有10複製,他們只是有「0_」的附加而不是一個遞增的數字(1-infinity)。

我也試過!c!而不是複製行部分中的%c%,但它只是逐字添加「!c!」而不是變量的價值。

我在這裏做錯了什麼?

+0

你用'!c!'在正確的軌道上,但是你需要在你的循環之前使用'setlocal enableDelayedExpansion'來激活'!var!'語法(延遲擴展) – dbenham

+0

不要緊,我找出原因! omg即時通訊如此愚蠢。 ENABLEDELAYEDEXPANSION應該是EnableDelayedExpansion!它的大小寫敏感!現在工作! :)) –

+5

它不區分大小寫 - 你可能有一個拼寫錯誤,你沒有注意到:)我喜歡使用混合大小寫只爲了可讀性。 – dbenham

回答

0

沒有那麼快(每個文件拷貝一個目錄),但得到獨立的記數爲

set source=C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 
for /f "tokens=*" %%A in ('dir /b /s /a-d "%source%\*.css"') do (
    for /f %%C in ('dir /b "c:\target\*_%%~nxA" ^| find /c "_"') do (
     copy "%%A" "c:\target\%%C_%%~nxA" 
    ) 
) 
0

你沒有設置enabledelayedexpansion,但你是不是在你的循環使用它的每個CSS文件。你應該給這一個嘗試,這是對我工作:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set /a c=0 
for /f "tokens=*" %%A in ('dir /b /s /a-d "C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\*.css"') do (
set /a c=c+1 
copy "%%A" "C:\Target\!c!_%%~nxA" 
) 
endlocal 

唯一的區別是第6行,我改變了%c%!c!

相關問題