windows - 如何在包含引号 ( "") 的批处理文件中运行命令?

标签 windows powershell batch-file

我有一个批处理文件正在尝试运行以下内容:

FOR /F "tokens=1" %%G IN ('git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a') DO echo %%G 

这会导致 git 错误“致命:无效的对象名称‘格式’。”

但是,如果我只是将命令本身放在批处理文件中,我会得到预期的输出。

git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a

产生:

Files/MyFiles/header.html
Files/MyFiles/foo.html

问题与“格式:”周围的引号有关。

我试过使用“”转义它们,但无济于事。我也试过了^。我试过使用 usebackq 参数。

如果你去掉 --pretty="format:"参数,这个循环也可以工作,但是我会插入一堆额外的文本。

最佳答案

您可以重定向不会导致问题的输出:

git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a >> out.tmp
FOR /F "tokens=1" %%G IN (out.tmp) DO echo %%G
del out.tmp

这应该通过将输出重定向到名为 out.tmp 的文件然后在您完成后将其删除来工作。

关于windows - 如何在包含引号 ( "") 的批处理文件中运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641138/

相关文章:

powershell - 在Powershell中将电子邮件收件人字符串拆分为数组

windows - bat - ECHO 在 txt 文件中关闭

java - 批处理 Java 帮助

python - 打开python最小化或隐藏的程序

.net - 如何从 .net 应用程序(重新)格式化分区?

windows - 用 Go 编写的目录 walker 因文件正在使用(锁定)错误而停止

PowerShell 的解析模式 : argument (command) mode vs. 表达模式

sql-server - Windows 2008 和 SQL Server 2008 的最佳负载平衡配置

python - 从 Python 程序中创建 PostgreSQL 角色/用户

windows - 如何在 Windows 批处理文件中使用多种颜色?