1

我正在尝试制作一个批处理文件来备份和恢复我最喜欢的在线游戏的 cookie,但在尝试浏览 Chrome 用来存放其 cookie 的随机命名文件夹时遇到了问题。

我尝试使用该FOR命令获取一个变量,该变量将为我提供文件夹的名称,然后我稍后将在目录中使用该变量。该变量在ECHO'd 时工作正常,但%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而不是应显示为的随机数字字符串。

如果我做错了什么,请批评我。如果您有建议或替代方法来处理此问题,请告诉我。提前致谢。

4

3 回答 3

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

注意 metavariable( %%G) 的 CASE 很关键,但它的名称和大小写TARGET不是。

于 2013-03-21T19:10:31.810 回答
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"
)
于 2013-03-21T19:26:14.347 回答
0

如果您想在代码的一部分中找到该文件夹​​并在其他地方使用它,您可以使用for循环设置另一个变量,并在以后使用另一个变量进行复制。

FOR /F "tokens=*" %%G IN ('dir /B /AD "...your path..."') DO (
    SET FolderPath=%%G
)

...和其他地方:

COPY "...source file..." "%FolderPath%"
于 2013-03-21T19:30:45.767 回答