删除 Forfiles 输出 {cmd} 中的引号

删除 Forfiles 输出 {cmd} 中的引号

因此我运行这个命令:

FORFILES /S /M *.dmg /C "cmd /c if @fsize equ 1595694080 echo @fname"

输出:

"058-26174-078"

但问题是我想要不带引号的名字

像这样:058-26174-078

答案1

如何从 shell 中的变量中删除引号cmd

您需要使用~参数扩展来for /f执行此操作。

使用以下命令:

for /f %i in ('FORFILES /S /M *.dmg /C "cmd /c if @fsize equ 1595694080 echo @fname"') do @echo %~i

要设置变量,请在批处理文件中使用以下命令:

for /f %%i in ('FORFILES /S /M *.dmg /C "cmd /c if @fsize equ 1595694080 echo @fname"') do @set MyVariable=%%~i

笔记:

  • %~1展开%1删除所有周围的引号 (")
  • 在批处理文件中替换%i%%i%~i%%~i

进一步阅读

答案2

使用for命令,下面是一个例子:

@echo off
FORFILES /S /M *.dmg /C "cmd /c if @fsize equ 1595694080 set quote=@fname"
for %%a in (%quote%) do set dequote=%%~a

您可以使用 %dequote% 变量来获取去引号的字符串,我可能语法错误,因为我从未使用过 forfiles 命令。

相关内容