[英]How to execute git log on windows cmd?
我有以下命令:
git log --pretty=tformat:'<li>%h %ci %d %s</li>' > changelog.html
这将git日志保存到changelog.html文件中。 当我通过git bash执行它时,它工作正常,但是当我将此代码放在.bat文件中并运行它时,我收到以下错误:
The system could not find the specified file
我认为这是由格式参数的引号引起的,但我不知道如何解决问题...有没有办法逃避引号呢?
在Windows批处理文件中,您必须:
%
字符。 他们被视为文字 >
: git log --pretty=tformat:"<li>%%h %%ci %%d %%s</li>" > changelog.html
^
来转义未加引号的字符串中的单个字符(例如, ^%
表示文字%
,或^|
表示文字|
),但这不起作用 ,因为以下警告 : ^
来转义空格字符以形成具有嵌入空格的单个参数; 例如, foo^ bar
仍然分为2个参数, foo
和bar
。 来自Unix世界的读者的一些背景 :
for
循环) - 它们不能用于分隔具有嵌入空格的字符串。 $
双引号的bash字符串作为\\$
防止膨胀,你有逃跑%
作为%%
在双引号字符串,以防止在批处理文件的扩展 ,因为标识符括在%
字符。 (例如, %PATH%
)表示要扩展的变量引用 。
cmd.exe
提示不需要逃逸%
,而批处理文件执行。 更具体地说, %
chars。 在交互式命令行中被视为文字, 除非它们是对现有变量的变量引用的一部分(例如, %windir%
),在这种情况下会发生扩展。 这一奇怪现象是,原因for
循环必须写成for %i in ...
( 一个 %
)在命令行上,并作为for %%i in ...
( 二 %
在批处理文件)。 ~
参数修饰符可用于剥离它们 ; 例如, %~1
返回没有双引号的第一个参数(如果有的话)。 \\
在一POSIX壳没有引号的字符串-escaping 各个字符是^
-escaping,但是,如上所述, ^
不能使用,以形成带有嵌入空白一个参数逸出的空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.