如何将目录中多文件名拼接为可执行命令字符串?
生成指定格式的命令字符串方法
Linux/macOS(Shell环境)
直接执行命令
利用Shell通配符快速匹配文件,直接运行命令:
./<executable> * <outputfile>
*会匹配当前目录下所有非隐藏文件,自动替换为文件名列表。- 若需包含隐藏文件(以
.开头的文件),先启用dotglob选项再执行:
shopt -s dotglob ./<executable> * <outputfile>
生成命令字符串并保存
如果需要先把命令保存为字符串(比如后续复用),推荐用printf处理文件名(避免空格、特殊字符导致的问题):
# 生成命令字符串 cmd="./<executable> $(printf "%s " *) <outputfile>" # 执行命令 eval "$cmd"
Windows 命令提示符(CMD)
直接执行命令
利用通配符匹配当前目录所有非隐藏文件:
<executable> * <outputfile>
生成命令字符串(支持包含隐藏文件)
通过循环拼接文件名(需开启延迟变量扩展):
@echo off setlocal enabledelayedexpansion set "files=" for /f "delims=" %%f in ('dir /b /a-d') do set "files=!files! %%f" <executable> !files! <outputfile> endlocal
/a-d表示排除目录,包含所有文件(含隐藏文件);若只需非隐藏文件,改为/a-h。
Windows PowerShell
直接执行命令
利用Get-ChildItem获取文件列表,自动处理带空格的文件名:
& .\<executable> (Get-ChildItem -File) .\<outputfile>
- 若需包含隐藏文件,添加
-Force参数:
& .\<executable> (Get-ChildItem -File -Force) .\<outputfile>
生成命令字符串
# 获取所有文件名并拼接 $files = (Get-ChildItem -File | ForEach-Object { $_.Name }) -join ' ' # 生成命令字符串 $cmd = ".\<executable> $files .\<outputfile>" # 执行命令 Invoke-Expression $cmd
内容的提问来源于stack exchange,提问作者len
相关产品推荐
相关产品推荐

