gpt4 book ai didi

batch-file - 将 FIND 命令的输出保存到变量

转载 作者:行者123 更新时间:2023-12-03 23:48:37 28 4
gpt4 key购买 nike

如标题所述,我正在尝试获取 FIND 命令的输出并将其保存到变量中。具体来说,我正在使用:

DIR /b /s "C:\" | FIND "someexe.exe"

找到一个特定的 .exe 文件,这似乎工作正常,但我想保存 FIND 的结果以便稍后在同一脚本中使用。

我尝试了各种不同的调整:

for /f "usebackq" %%i in (`DIR /b /s "C:\" | FIND "someexe.exe"`) do SET foobar=%%i

但是当我尝试运行脚本时,命令窗口立即关闭(可能是由于某些错误,我尝试在下一行中放置 PAUSE 命令但无济于事)。

我认为这是我做错的一些愚蠢的小事,但如果有人能告诉我这是什么,我将不胜感激。仅供进一步引用,我不关心存在多少个“someexe.exe”副本,我只需要其中一个的路径。

最佳答案

你应该得到这个错误:|这时候出乎意料。。您的直接问题是未加引号的特殊字符,如 | 出现在 FOR/F(“命令”)中时,必须使用 ^ 进行转义。

for /f "usebackq" %%i in (`DIR /b /s "C:\" ^| FIND "someexe.exe"`) do SET foobar=%%i

听起来您正在通过从桌面或 Windows 资源管理器中双击来运行批处理文件。这行得通,但是在批处理终止后窗口立即关闭。在您的情况下,由于语法错误,它在到达 PAUSE 之前终止。

我总是从命令窗口运行我的批处理文件:从“开始”菜单中您要运行 cmd.exe。这将打开一个命令控制台。然后 CD 到您的批处理文件所在的目录,然后通过键入其名称运行批处理文件(不需要扩展名)。现在窗口在脚本终止后保持打开状态。您可以使用 SET 检查您的变量,运行另一个脚本,等等。

在你的情况下不需要使用 FIND - DIR 可以直接找到文件。此外,您的文件路径可能包含空格,在这种情况下,它将被解析为标记。您需要设置“DELIMS=”或“TOKENS=*”以便获得完整路径。

我一直不明白为什么人们在执行命令时使用 USEBACKQ。只有当我尝试对文件使用 FOR/F 并且由于空格和/或特殊字符而需要将文件括在引号中时,我才发现它很有用。

此外,由于无法访问目录,您可能会遇到错误。将 stderr 重定向到 nul 会清理输出。同样,> 必须转义。

for /f "delims=" %%F in ('dir /b /s "c:\someexe.exe" 2^>nul') do set foobar=%%F

关于batch-file - 将 FIND 命令的输出保存到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524239/

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