Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Batch file 将目录更改为参数目录_Batch File_Windows 10 - Fatal编程技术网

Batch file 将目录更改为参数目录

Batch file 将目录更改为参数目录,batch-file,windows-10,Batch File,Windows 10,我有一个脚本,它接受文件路径作为它的唯一参数。例如,输入可以是D:\Folder\u A\Folder\u B\filename.txt 如果不保证文件和脚本位于同一驱动器上,如何将目录更改为该文件的目录 我知道cd/d可以更改驱动器和目录。但是,类似于cd/d%1的内容会导致目录名无效。因为%1不是文件夹的路径,而是文件的路径。我建议您使用一段代码,检查输入,并向最终用户提供消息,如果它不是现有的文件路径,(绝对,相对于当前目录) 例如: @Echo关闭 setLocalEnableExten

我有一个脚本,它接受文件路径作为它的唯一参数。例如,输入可以是
D:\Folder\u A\Folder\u B\filename.txt

如果不保证文件和脚本位于同一驱动器上,如何将目录更改为该文件的目录


我知道
cd/d
可以更改驱动器和目录。但是,类似于
cd/d%1
的内容会导致
目录名无效。
因为
%1
不是文件夹的路径,而是文件的路径。

我建议您使用一段代码,检查输入,并向最终用户提供消息,如果它不是现有的文件路径,(绝对,相对于当前目录)

例如:

@Echo关闭
setLocalEnableExtensions
对于“%$1”中的%%G,如果“%%~aG”Lss”-”(回显错误!文件参数无效。
“%SystemRoot%\System32\timeout.exe”/T 3/NoBreak 1>NUL&GoTo:EOF
)否则如果“%%~aG”GEq“d”(回显错误!需要文件,但提供了文件夹)。
“%SystemRoot%\System32\timeout.exe”/T 3/NoBreak 1>NUL&GoTo:EOF
)其他CD/D“%~dp1”
回显“%CD%”并暂停
添加最后一行只是为了向您提供当前目录更改的指示。您显然会将其替换为脚本的其余部分


请注意注释中提供的信息。例如,您可以将
CD/D“%~dp1”
替换为
PushD“%~dp1”
,也可以使用
for
变量修饰符
%~dpG
而不是
%~dp1
CD/D“%~dp1”或
PushD“%~dp1”在离开批处理文件之前,请使用
popd
打开,运行
call/?
cd/?
pushd/?
popd/?
并仔细阅读每个输出帮助。除了
/?
中的帮助外,您还可以查看、和上的SS64。