Batch file 如何定位文件';s的位置和CD到目录中?

Batch file 如何定位文件';s的位置和CD到目录中?,batch-file,cmd,Batch File,Cmd,我正在制作一个编辑文档的批处理,但为了进行编辑,它需要将其CD到其位置。我遇到的问题是,为了使其可移植,我需要命令来定位文件的位置 我试过: CD C:\Users\%username%\AppData\Roaming\skype\John CD C:\Users\%username%\AppData\Roaming\skype\%foldername%\config.xml 是否可以使用config.xml访问该位置?您可以尝试使用: FOR /D %%G IN ("%APPDATA%

我正在制作一个编辑文档的批处理,但为了进行编辑,它需要将其CD到其位置。我遇到的问题是,为了使其可移植,我需要命令来定位文件的位置

我试过:

 CD C:\Users\%username%\AppData\Roaming\skype\John

 CD C:\Users\%username%\AppData\Roaming\skype\%foldername%\config.xml
是否可以使用config.xml访问该位置?

您可以尝试使用:

FOR /D %%G IN ("%APPDATA%\skype\*") DO IF EXIST "%%~fG\config.xml" (
    set correctDir=%%G
    goto :foundFile
)
echo File config.xml not found
goto :eof

:foundFile
cd "%correctDir%"
使用
%%G
变量迭代所有目录
%%~fG
扩展到%%G中目录的完整路径。
检查文件是否存在。
goto:eof
退出脚本


EDIT:正如@Compo指出的:出于可移植性的原因,最好使用OS内置环境变量
%APPDATA%
,而不是
C:\Users\%username%\APPDATA\Roaming

您可能需要
CD“C:\Users\%username%\AppData\Roaming\skype\John”
(始终尝试用双引号括起路径)。如果能提供更多关于您收到的错误消息或发生的错误的信息,我们可能会为您提供更多帮助。但是,我需要刻录到的文件夹就是包含config.xml的文件夹,每个用户的文件夹名称都会更改。使用您尝试过的内容时会发生什么情况:
CD C:\Users\%username%\AppData\Roaming\skype\John
?该目录中是否有多个文件夹?那么您如何知道要编辑哪个config.xml文件?“file config.xml not found”此命令是否检查所有目录?假设在
C:\Users\%username%\AppData\Roaming\skype
中有多个文件夹,它是在skype的子文件夹中还是在skype文件夹的子文件夹中?位置是
C:\Users\%username%\AppData\Roaming\skype\John
代码有效。先生,你是一个真正的传奇人物。真的很感激!。。。只需提及,由于整个线程中似乎都忽略了它,所以位置应该是,
%AppData%\skype
。在最坏的情况下,甚至
%UserProfile%\AppData\Roaming\skype
都是一种改进。