Jig*_*gar 154 windows command-line
我们如何将命令扩展到下一行?
基本上是Linux的替代品
ls -l \
/usr/
Run Code Online (Sandbox Code Playgroud)
这里我们使用反斜杠来扩展下一行的命令
什么是Windows的等价物?
Tim*_*mbo 262
几乎尝试键盘上的每个键后:
C:\Users\Tim>cd ^
Mehr? Desktop
C:\Users\Tim\Desktop>
Run Code Online (Sandbox Code Playgroud)
所以它似乎是^关键.
nhu*_*uvy 54
解决方案 1在 CMD 中,使用^
, example
docker run -dp 3000:3000 ^
-w /app -v "$(pwd):/app" ^
--network todo-app ^
-e MYSQL_HOST=mysql ^
-e MYSQL_USER=root ^
-e MYSQL_PASSWORD=secret ^
-e MYSQL_DB=todos ^
node:12-alpine ^
cmd "npm install && yarn run start"
Run Code Online (Sandbox Code Playgroud)
解决方案 2在 PowerShell 中,使用`(反引号),示例
docker run -dp 3000:3000 `
-w /app -v "$(pwd):/app" `
--network todo-app `
-e MYSQL_HOST=mysql `
-e MYSQL_USER=root `
-e MYSQL_PASSWORD=secret `
-e MYSQL_DB=todos `
node:12-alpine `
cmd "npm install && npm run start"
Run Code Online (Sandbox Code Playgroud)
Dae*_*min 52
在Windows命令提示符中,^
用于转义命令行上的下一个字符.(就像\
在字符串中使用一样.)需要在命令行中使用的字符应该具有^前缀,因此这就是它适用于换行符的原因.
作为参考,需要转义的字符(如果指定为命令参数而不是引号内)是: &|()
所以相当于你的linux示例(更多?是一个提示):
C:\> dir ^
More? C:\Windows
Run Code Online (Sandbox Code Playgroud)
如果你来这里寻找这个问题的答案,但不完全是OP的意思,即如何让多行CMD在单行中工作,我有一个危险的答案给你。
尝试将其与实际使用管道的东西一起使用(例如说)findstr
是相当有问题的。处理else
s 也是如此。但是,如果您只想直接从 CMD 执行多行条件命令而不是通过批处理文件,那么这应该可以很好地工作。
假设您希望在批处理中直接在命令提示符下运行类似的内容:
@echo off
for /r %%T IN (*.*) DO (
if /i "%%~xT"==".sln" (
echo "%%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file
echo Dumping SLN file contents
type "%%~T"
)
)
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用续行符克拉 ( ^
) 并像这样手动输入,但警告,这很乏味,如果您搞砸了,您可以体会再次输入全部内容的乐趣。
^
好吧,仅仅由于括号内的转义机制,它不会工作耸肩至少不是按写的那样。实际上,您需要将克拉加倍,如下所示:
@echo off ^
More? for /r %T IN (*.sln) DO (^^
More? if /i "%~xT"==".sln" (^^
More? echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file^^
More? echo Dumping SLN file contents^^
More? type "%~T"))
Run Code Online (Sandbox Code Playgroud)
|
相反,您可以通过在每个循环/表达式的延续中将它们替换为单个管道 ( ) 来从轨道的错误一侧成为不需要任何克拉的肮脏鬼祟的脚本编写者:
@echo off
for /r %T IN (*.sln) DO if /i "%~xT"==".sln" echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file | echo Dumping SLN file contents | type "%~T"
Run Code Online (Sandbox Code Playgroud)
小智 6
插入符号有效,但下一行不应以双引号开头。例如,这将不起作用:
C:\ ^
"SampleText" ..
Run Code Online (Sandbox Code Playgroud)
开始下一行没有双引号(不是一个有效的例子,只是为了说明)