0

我试图将 css 文件从 IE 的缓存文件夹复制到 C 中的某个文件夹:问题是有很多重复但我想保留它们,所以我制作了一个批处理脚本来复制所有 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

而不是复制大约 30 个 css 文件(我知道这是因为我可以在 IE 的缓存文件夹中看到它们)我只复制了大约 10 个,它们只是在前面附加了“0_”而不是递增的数字(1-无穷大)。

我也试过!c!而不是复制行部分中的 %c% ,但它只是按字面意思添加“!c!” 而不是变量的值。

我在这里做错了什么?

4

2 回答 2

0

不那么快(每个文件副本一个目录),但为每个 css 文件获取独立的编号

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"
    )
)
于 2013-10-15T06:48:36.260 回答
0

您确实设置了enabledelayedexpansion,但您没有在循环中使用它。你应该试一试,这对我有用:

@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!.

于 2015-05-02T16:44:09.050 回答