将 dir 输出作为参数传递给另一个命令
Pass dir output as argument to another command
我想使用 VLC 加入 .mp4 视频。当输入 Windows 命令提示符时,following command 运行良好:
vlc input_1.mp4 input_2.mp4 --sout "#gather:std{access=file,dst=output.mp4}" --sout-keep
我想概括这个咒语,这样我就不必手动调整输入文件列表。我想要当前目录中的所有 mp4 文件,按字母顺序排列。理想情况下是这样的:
files = dir *.mp4 -b -o:n
vlc %files% --sout "#gather:std{access=file,dst=output.mp4}" --sout-keep
第一行显然不是这样的。我尝试了一下这个命令,但是当文件名包含空格或(喘气!)感叹号时,事情很快就变得尴尬了。我也尝试过 PowerShell(Start-Process
和 &
),但由于缺乏经验无法弄清楚...
你的第二个例子看起来像是无效批处理和无效 powershell 代码的混合体。
在批处理文件中可能会这样做:
(只要文件字符串的长度不超过最大命令行长度)
@Echo off & Setlocal EnableDelayedExpansion
set "files="
for /f "delims=" %%A in ('Dir /B /ON *.mp4') Do Set "files=!files! "%%A""
vlc %files% --sout "#gather:std{access=file,dst=output.mp4}" --sout-keep
如果使用 powershell 生成该 cmd 命令,请尝试以下选项
从 powershell 执行:
cmd /c "vlc $((dir *.mp4).Name -join ' ') --sout ""#gather:std{access=file,dst=output.mp4}"" --sout-keep"
从 cmd 执行:
powershell -c "echo ""vlc $((dir *.mp4).Name -join ' ') --sout ""#gather:std{access=file,dst=output.mp4}"" --sout-keep""" | cmd
我想使用 VLC 加入 .mp4 视频。当输入 Windows 命令提示符时,following command 运行良好:
vlc input_1.mp4 input_2.mp4 --sout "#gather:std{access=file,dst=output.mp4}" --sout-keep
我想概括这个咒语,这样我就不必手动调整输入文件列表。我想要当前目录中的所有 mp4 文件,按字母顺序排列。理想情况下是这样的:
files = dir *.mp4 -b -o:n
vlc %files% --sout "#gather:std{access=file,dst=output.mp4}" --sout-keep
第一行显然不是这样的。我尝试了一下这个命令,但是当文件名包含空格或(喘气!)感叹号时,事情很快就变得尴尬了。我也尝试过 PowerShell(Start-Process
和 &
),但由于缺乏经验无法弄清楚...
你的第二个例子看起来像是无效批处理和无效 powershell 代码的混合体。
在批处理文件中可能会这样做:
(只要文件字符串的长度不超过最大命令行长度)
@Echo off & Setlocal EnableDelayedExpansion
set "files="
for /f "delims=" %%A in ('Dir /B /ON *.mp4') Do Set "files=!files! "%%A""
vlc %files% --sout "#gather:std{access=file,dst=output.mp4}" --sout-keep
如果使用 powershell 生成该 cmd 命令,请尝试以下选项
从 powershell 执行:
cmd /c "vlc $((dir *.mp4).Name -join ' ') --sout ""#gather:std{access=file,dst=output.mp4}"" --sout-keep"
从 cmd 执行:
powershell -c "echo ""vlc $((dir *.mp4).Name -join ' ') --sout ""#gather:std{access=file,dst=output.mp4}"" --sout-keep""" | cmd