【发布时间】:2013-03-11 19:14:24
【问题描述】:
我写了一个视频转换批处理,用户可以简单地将他的视频从任何磁盘或分区拖放到批处理上,之后转换后的视频将保存在特定磁盘上的特定位置。
代码如下所示
@echo off
%~d0
cd %~p0
for %%f in (%*) do ...
pause
实际问题在于(%*)。
当我的文件名称中有一个右圆括号时,批处理将不起作用。为了解决这个问题,我使用了("%*"),但这不适用于名称中包含空格的文件或多个文件。
我也试过(%~*),但这是无效的。
经过一些研究,我注意到,当我在批处理中删除多个名称为 file(test) 和 file test 的文件时,%* 解析为
file(test) "file test"
这意味着文件名可以有引号,也可以不...
我的问题是:我该如何处理?
理想情况下,我希望 %* 解析为 "file(test)" "file test"(两个名称都用引号括起来)
【问题讨论】:
-
旁注:请注意,您可以使用
pushd %~dp0而不是%~d0+cd %~p0。附带的好处是,如果你想回到原来的文件夹,你可以在最后做一个popd。 -
替代
pushd,您可以使用cd /d %~dp0。
标签: windows batch-file drag-and-drop