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。