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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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,我已经编写了一个脚本来搜索形状文件(.shp),一旦找到,我想切换到该目录:以下是我所拥有的 FOR /F %%X IN ('DIR /S /B *.shp') DO SET shapefolder=%%~DPNX IF DEFINED shapefolder ( ECHO %shapefolder% CD /d shapefolder REM doesn't work ) ELSE ( ECHO File not found ) 我遗漏了什么?只需在cd命令中向变量添加百分号:

我已经编写了一个脚本来搜索形状文件(.shp),一旦找到,我想切换到该目录:以下是我所拥有的

 FOR /F %%X IN ('DIR /S /B *.shp') DO SET shapefolder=%%~DPNX
 IF DEFINED shapefolder (
 ECHO %shapefolder%
 CD /d shapefolder REM doesn't work
 ) ELSE (
 ECHO File not found
 )

我遗漏了什么?

只需在
cd
命令中向变量添加百分号:

CD /d %shapefolder%

您的代码有两个问题。第一,正如Oliver已经指出的那样,
cd/d shapefolder
应该是
cd/d%shapefolder%
,这样您就调用了实际变量

另一件事是
SET shapefolder=%%~DPNX
应该改为
SET shapefolder=%%~DPX


这是因为
N
引用了它找到的文件的文件名,所以如果您有一个square.shp,那么您的代码当前将查找
C:\files\shapes\square
,而不是像它应该的那样查找
C:\files\shapes\

cd\d%shapefolder%??你确定你不是指cd'/d%shapefolder%