Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Windows:访问目录而不知道其名称_Windows_Batch File_Directory - Fatal编程技术网

Windows:访问目录而不知道其名称

Windows:访问目录而不知道其名称,windows,batch-file,directory,Windows,Batch File,Directory,我正在编写一个windows批处理脚本,我想在其中访问\build\whatethernameis\debug。但是,我得到一个错误,如下所示: The system can not find the given path 这个地方只能有一个目录,没有其他目录。它是一个生成的路径,不幸的是中间的名称不同。 到目前为止,我已经尝试了以下命令: cd build\*\debug build\~1\debug 应该将您移动到所需的目录 以带有子目录的基本形式,仅执行/ad目录的目录列表/s/b,

我正在编写一个windows批处理脚本,我想在其中访问
\build\whatethernameis\debug
。但是,我得到一个错误,如下所示:

The system can not find the given path
这个地方只能有一个目录,没有其他目录。它是一个生成的路径,不幸的是中间的名称不同。

到目前为止,我已经尝试了以下命令:

  • cd build\*\debug
  • build\~1\debug
应该将您移动到所需的目录

以带有子目录的基本形式,仅执行
/ad
目录的目录列表
/s/b
,查找
debug
。将找到的每个目录分配给
%%a
(您声称只有一个),并使用
“delims=“
确保分配了整个令牌

应该将您移动到所需的目录


以带有子目录的基本形式,仅执行
/ad
目录的目录列表
/s/b
,查找
debug
。将找到的每个目录分配给
%%a
(您声称只有一个目录),并使用
“delims=“
”确保分配了整个令牌。

如果您知道该目录只有1级深,直接查找它可能比执行完全递归的树搜索更快

@For/D%%A In(*)Do@If-Exist“%%A\debug\”CD“%%A\debug”

如果您知道目录只有1级深度,那么直接查找它可能比执行完全递归的树搜索更快

@For/D%%A In(*)Do@If-Exist“%%A\debug\”CD“%%A\debug”

谢谢,经过一些修改后,它工作得非常好。一般来说,如果当前代码页中无法表示目录名(因为/f的
是cmd.exe中的一个特例,从未更新过以支持本机UTF-16 Unicode),那么您可以在该命令前面加上
chcp 65001
(UTF-8)。但是,许多程序在控制台API错误的UTF-8实现中失败,因此您可能希望在运行此命令后保存并还原当前代码页。谢谢,经过一些修改后,如果当前代码页中无法表示目录名,它通常可以完美地工作(因为/f
是cmd.exe中的一个特例,从未更新以支持本机UTF-16 Unicode),因此您可以在该命令前面加上
chcp 65001
(UTF-8)。但是,许多程序由于控制台API错误的UTF-8实现而失败,因此您可能希望在运行此命令后保存并还原当前代码页。与其他答案相比,它更适合我的需要。谢谢您,先生!此答案的一个好处是
for/d
支持文件系统的本机Unicode,unlike
for/f
。因此,您不必修改控制台代码页以支持国际名称。它比其他答案更适合我的需要。谢谢您,先生!这个答案的一个好处是
for/d
支持文件系统的本机Unicode,这与
for/f
不同。因此,您不必修改控制台c支持国际名称的网页。
for /f "delims=" %%a in ('dir /s/b/ad ".\debug"') do cd "%%a"