首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >令人困惑的windows命令行为(对于/F.)

令人困惑的windows命令行为(对于/F.)
EN

Stack Overflow用户
提问于 2022-09-02 13:41:27
回答 1查看 43关注 0票数 2

我正在尝试编写一个批处理脚本,在git中检查本地mods。我只需要一个是/否输出,但我想排除未跟踪的文件。

下面是在命令行中包含未跟踪文件时所看到的内容:

代码语言:javascript
复制
C:\local_workspace>git status --porcelain
 M EWARM/stm32u575xx_flash.icf
 M EWARM/stm32u575xx_sram.icf
?? EWARM/bui.h
?? EWARM/gen_build_info_header_git.bat
?? EWARM/test.h
?? EWARM/test2.h

我可以使用for命令来处理这个问题:

代码语言:javascript
复制
C:\local_workspace>for /F "delims=" %i in ('git status --porcelain') do (echo [%i])

C:\local_workspace>(echo [ M EWARM/stm32u575xx_flash.icf] )
[ M EWARM/stm32u575xx_flash.icf]

C:\local_workspace>(echo [ M EWARM/stm32u575xx_sram.icf] )
[ M EWARM/stm32u575xx_sram.icf]

C:\local_workspace>(echo [?? EWARM/bui.h] )
[?? EWARM/bui.h]

C:\local_workspace>(echo [?? EWARM/gen_build_info_header_git.bat] )
[?? EWARM/gen_build_info_header_git.bat]

C:\local_workspace>(echo [?? EWARM/test.h] )
[?? EWARM/test.h]

C:\local_workspace>(echo [?? EWARM/test2.h] )
[?? EWARM/test2.h]

如果我排除了跟踪的文件,我看到的是:

代码语言:javascript
复制
C:\local_workspace>git status --porcelain --untracked-files=no
 M EWARM/stm32u575xx_flash.icf
 M EWARM/stm32u575xx_sram.icf

现在让我们试试for

代码语言:javascript
复制
C:\local_workspace>for /F "delims=" %i in ('git status --porcelain --untracked-files=no') do (echo [%i])

C:\local_workspace>

没有输出!为什么不行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-02 14:37:55

for循环将=视为空白,因此对于所有意图和目的,您的代码都试图处理命令git status --porcelain --untracked-files no,该命令是无效的。

为了保存=,需要使用^git status --porcelain --untracked-files^=no来转义

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73583491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档