我正在尝试为我最喜爱的在线游戏制作单个批处理文件备份和恢复Cookie,但在尝试浏览Chrome用于存放其Cookie的随机命名文件夹时遇到了问题。
我尝试使用FOR
命令获取一个可以给我文件夹名称的变量,然后我会在目录中使用该变量。变量在ECHO
'时工作正常,但在放入目录时变为%G
。
起初我输入了我的代码,但这是一个丑陋的文本块,所以这里只是一个示例:
FOR /F "tokens=*" %%G IN ('dir /B /AD "%SYSTEMDRIVE%\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Pepper Data\Shockwave Flash\WritableRoot\#SharedObjects"') DO (
echo %%G )
这返回了正确文件夹名称的回显:)
但是当我在目录中使用%%G
时:
copy "%SYSTEMDRIVE%\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Pepper Data\Shockwave Flash\WritableRoot\#SharedObjects\%%G\chat.kongregate.com\antiIdle_file0" "%HOMEPATH%\My Documents\Anti-Idle backup\antiIdle_file0.sol" /D /E /C /R /I /K /Y
在前面使用ECHO测试变量时,%%G
显示为%G
,而不是应显示为的随机数字字符串。
如果我做错了,请批评我。如果您有建议或其他方式来处理此问题,请告诉我。 提前谢谢。
答案 0 :(得分:0)
%%G
仅在FOR
的上下文中有效,因此您需要在COPY
之后的括号之间包含DO
命令
FOR /F "tokens=*" %%G IN (
'dir ...blahblahblah...SharedObjects"') DO (
echo %%G
copy "%SYSTEMDRIVE%\...blah..SharedObjects\%%G\...zzzz...file0" "%HOMEPATH%...etc.._file0.sol" /D /E /C /R /I /K /Y
)
显然,echo %%G
是可选的。
(将命令分成不同的行是可以的 - 小心。关键是开括号与DO在同一行)
另一种方式是
FOR /F "tokens=*" %%G IN (
'dir ...blahblahblah...SharedObjects"') DO set "target=%%G"
copy "%SYSTEMDRIVE%\...blah..SharedObjects\%TARGET%\...zzzz...file0" "%HOMEPATH%...etc.._file0.sol" /D /E /C /R /I /K /Y
注意到元变量(%%G
)的CASE是关键的,但TARGET
的名称和大小写不是。
答案 1 :(得分:0)
您还可以对chat.kongregate.com
进行递归搜索。
for /f "delims=" %%I in ('dir /s /b /a:d "%LOCALAPPDATA%\Google\Chrome\*chat.kongregate.com"') do (
copy /d /y "%%I\antiIdle_file0" "%USERPROFILE%\My Documents\Anti-Idle backup\antiIdle_file0.sol"
)
答案 2 :(得分:0)
如果要在代码的一部分中找到该文件夹并在其他地方使用它,可以使用for
循环设置另一个变量,然后再使用另一个变量进行复制。
FOR /F "tokens=*" %%G IN ('dir /B /AD "...your path..."') DO (
SET FolderPath=%%G
)
......和其他地方:
COPY "...source file..." "%FolderPath%"