我想git show -s --format=%h在批處理檔案中使用 git 命令,想將結果存盤在變數中。
這不起作用:
FOR /F %%i IN ('git show -s --format=%h') DO set commit=%%i
echo commit=%commit%
因為echo on它執行的命令是:
FOR /F %i IN ('git show -s --format') DO set commit=%i
和輸出是:
commit=
這種方法有效,但似乎很奇怪的解決方案:
set hhh="=%%h"
FOR /F %%i IN ('git show -s --format%hhh%') DO set commit=%%i
因為執行的命令是:
FOR /F %i IN ('git show -s --format"=%h"') DO set commit=%i
并且輸出是正確的:
commit=6446e53
我猜這與如何在帶有百分號的批處理檔案中參考和使用變數有關。
是否有更好的解決方案,它將按應有的方式執行:git show -s --format=%h?
uj5u.com熱心網友回復:
以下是如何在批處理檔案中轉義字符的串列:轉義字符 - Rob van der Woude
如果將來鏈接斷開:
| 要轉義的字符 | 轉義序列 | 評論 |
|---|---|---|
| % | %% | |
| ^ | ^^ | 在雙引號字串中可能并不總是需要,但它不會受到傷害 |
| & | ^& | |
| < | ^< | |
| > | ^> | |
| | | ^| | |
| ' | ^' | 僅在 FOR /F“主題”中需要(即在括號之間),除非使用 backq |
| ` | ^` | 如果使用 backq,則僅在 FOR /F“主題”(即括號之間)中需要 |
| , | ^, | 僅在 FOR /F“主題”(即括號之間)中需要,即使在雙引號字串中也是如此 |
| ; | ^; | |
| = | ^= | |
| ( | ^( | |
| ) | ^) | |
| ! | ^^! | 僅當延遲變數擴展處于活動狀態時才需要 |
| ” | “” | 僅在 FIND 的搜索模式內需要 |
| \ | \\ | 僅在 FINDSTR 的正則運算式模式內需要 |
| [ | \[ | |
| ] | \] | |
| ” | \" | |
| . | \. | |
| * | \* | |
| ? | \? |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322041.html
