Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 在目录树中使用随机生成的文件夹名?_Variables_Random_Batch File_Directory - Fatal编程技术网

Variables 在目录树中使用随机生成的文件夹名?

Variables 在目录树中使用随机生成的文件夹名?,variables,random,batch-file,directory,Variables,Random,Batch File,Directory,我正试图创建一个批处理文件来备份和恢复我最喜欢的在线游戏的cookies,但在试图浏览Chrome用来存放cookies的随机命名文件夹时遇到了问题 我尝试使用FOR命令获取一个变量,该变量将为我提供文件夹的名称,然后我将在以后的目录中使用该变量。变量在ECHO'd时工作正常,但在放入目录时变为%G 起初我输入了代码,但它是一个难看的文本块,所以这里只是一个示例: FOR /F "tokens=*" %%G IN ('dir /B /AD "%SYSTEMDRIVE%\Users\%USERNA

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

我尝试使用
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
,而不是应显示为的随机数字字符串

如果我做错了什么,请批评我。如果你有什么建议或其他处理方法,请告诉我。
提前感谢。

%%G
仅在
FOR
的上下文中有效,因此您需要在
DO
后面的括号中包含
COPY
命令

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
)的大小写是关键的,但是
目标的名称和大小写则不是。

您也可以递归搜索
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"
)

如果要在代码的一部分中找到文件夹并在其他地方使用,可以使用
for
循环设置另一个变量,然后在以后的副本中使用另一个变量

FOR /F "tokens=*" %%G IN ('dir /B /AD "...your path..."') DO (
    SET FolderPath=%%G
)
。。。以及其他地方:

COPY "...source file..." "%FolderPath%"

这并不是问题所在,但通过使用
%LOCALAPPDATA%
而不是
%SYSTEMDRIVE%\Users\%USERNAME%\AppData\Local
,您可以大大缩短路径。或者,如果您想要XP兼容性,
%TEMP%\..\Google\etc
:)更多关于的信息。谢谢你给了我我想要的答案。:)给了我足够的机动性来增加额外的功能,非常感谢!