如何将命令扩展到下一行?
基本上,Linux的Windows替代品是什么:
ls -l \
/usr/
这里我们使用反斜杠将命令扩展到下一行。
Windows有什么对应的功能?
如何将命令扩展到下一行?
基本上,Linux的Windows替代品是什么:
ls -l \
/usr/
这里我们使用反斜杠将命令扩展到下一行。
Windows有什么对应的功能?
在尝试了键盘上的几乎每个键后:
C:\Users\Tim>cd ^
Mehr? Desktop
C:\Users\Tim\Desktop>
所以好像是^ key。
在Windows命令提示符中,^用于转义命令行的下一个字符。(比如\在字符串中使用。)需要在命令行中使用的字符应该有一个^前缀,因此这就是为什么它适用于换行符。
作为参考,需要转义的字符(如果指定为命令参数而不是在引号内)是:&|()
因此,与您的linux示例等效的是(the More?作为提示):
C:\> dir ^
More? C:\Windows
插入字符可以,但是下一行不应该以双引号开始。例如,这将不起作用:
C:\ ^
"SampleText" ..
开始下一行时不要使用双引号(不是一个有效的示例,只是为了说明)
如果你来这里寻找这个问题的答案,但不完全是OP的意思,即如何让多行CMD在单行中工作,我有一个危险的答案给你。
试图将它与使用管道的东西一起使用,比如findstr,是很有问题的。与他人相处也是如此。但如果你只是想要一个多行条件命令直接从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"
)
)
现在,您可以使用行延续符carat(^)并像这样手动输入它,但警告,这很乏味,如果您搞砸了,您可以重新输入它的乐趣。
好吧,由于括号内的转义机制,它不能工作,至少不能像写的那样。你实际上需要把克拉数加倍,像这样:
@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"))
相反,你可以成为一个肮脏的脚本写手,从轨道的错误一侧,不需要任何克拉,通过将它们交换为单个管道(|),每次循环/表达式的继续:
@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"
解决方法1在CMD中,以^为例
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"
解决方案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"
在windows 10 22H2中,只需在开括号后按enter,就会得到与在行末输入^相同的结果。 例如,在输入这行代码后:
>for %f in (*) do (
按enter键,会自动弹出如下一行:
More?