Nol*_*nar 1 windows drag-and-drop batch-file
我已经编写了一个视频转换批处理,用户只需将视频从任何磁盘或分区拖放到批处理中,之后转换后的视频将保存在特定磁盘上的特定位置.
代码看起来像这样
@echo off
%~d0
cd %~p0
for %%f in (%*) do ...
pause
Run Code Online (Sandbox Code Playgroud)
实际问题在于(%*).
当我的文件名称中有一个结束圆括号时,批处理将不起作用.为了解决这个问题,我使用了("%*"),但这不适用于名称中包含空格或多个文件的文件.
我也试过,(%~*)但那是无效的.
经过一番研究,我发现,当我滴在批与名称的多个文件file(test)和file test,%*解析
file(test) "file test"
Run Code Online (Sandbox Code Playgroud)
这意味着文件名可能带引号,或者不是......
我的问题是:我该如何处理?
理想情况下,我想%*解决"file(test)" "file test"(两个名字都包围引号)
for您可以使用每个参数一次调用一个子例程,而不是使用循环.
:nextArgument
set arg=%~1
if not defined arg goto :eof
call :processFile "%arg%"
shift
goto nextArgument
:processFile
set file=%~1
echo "%file%"
:: do your processing here
goto :eof
Run Code Online (Sandbox Code Playgroud)
这将处理每个空格分隔的参数(但引用的参数可以包含空格),一次一个,将它们传递给processFile例程.我首先使用%~1从参数中删除引号,然后在调用processFile时添加引号.这样我知道当我进入processFile时,所有内容都引用了它.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |