我写了一个视频转换批处理,用户可以简单地将他的视频从任何磁盘或分区拖放到批处理上,之后转换后的视频将保存在特定磁盘的特定位置。
代码看起来像这样
@echo off
%~d0
cd %~p0
for %%f in (%*) do ...
pause
实际问题出在(%*)
.
当我的文件名称中有一个右圆括号时,批处理将不起作用。为了解决这个问题,我使用("%*")
了 ,但这不适用于名称中包含空格的文件或多个文件。
我也试过,(%~*)
但这是无效的。
经过一些研究,我注意到,当我在批处理中删除多个文件时,名称为file(test)
and file test
,%*
解析为
file(test) "file test"
这意味着文件名可能有引号,也可能没有......
我的问题是:我该如何处理?
理想情况下,我想%*
解决"file(test)" "file test"
(两个名字都用引号括起来)