在 cmd.exe 中,FOR /F % variable IN ( filename ) DO 命令应该可以满足您的需求。这会一次读取一行文件名的内容(它们可能是多个文件名),将该行放在 %variable 中(或多或少;在命令提示符下执行 HELP FOR)。如果没有其他人提供命令脚本,我会尝试。
编辑:我尝试执行请求的 cmd.exe 脚本:
@echo off
rem first arg is the file containing filenames
rem second arg is the target directory
FOR /F %%f IN (%1) DO IF EXIST %2\%%f ECHO %%f exists in %2
注意,上面的脚本必须是脚本;出于某种奇怪的原因,.cmd 或 .bat 文件中的 FOR 循环必须在其变量之前有两个百分号。
现在,对于与 bash|ash|dash|sh|ksh 一起使用的脚本:
filename="${1:-please specify filename containing filenames}"
directory="${2:-please specify directory to check}
for fn in `cat "$filename"`
do
[ -f "$directory"/"$fn" ] && echo "$fn" exists in "$directory"
done