gpt4 book ai didi

command-line - 如何测试文件列表是否存在?

转载 作者:行者123 更新时间:2023-12-04 09:22:50 24 4
gpt4 key购买 nike

我有一个列出文件名的文件,每个文件名都在自己的行上,我想测试每个文件名是否存在于特定目录中。例如,文件的一些示例行可能是

mshta.dll
foobar.dll
somethingelse.dll

我感兴趣的目录是 X:\Windows\System32\ ,所以我想看看是否存在以下文件:
X:\Windows\System32\mshta.dll
X:\Windows\System32\foobar.dll
X:\Windows\System32\somethingelse.dll

如何使用 Windows 命令提示符执行此操作?另外(出于好奇)我将如何使用 bash 或其他 Unix shell 执行此操作?

最佳答案

在 cmd.exe 中, FOR/F % 变量 IN ( filename ) DO 命令应该给你你想要的。这一次一行读取 filename 的内容(它们可能是多个文件名),将该行放在 %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

关于command-line - 如何测试文件列表是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com