有没有办法解决这个问题:
printf '=%.0s' {1..100} > file.txt
从bash到cmd控制台?
要查看上面的代码看起来是什么here。
我可以想到一些变量和for循环的解决方法,但我希望有一个快速简单的解决方案,不需要为有问题的cmd设置“-v”选项(shell由{打开} {1}}据我所知,你不能指定“-v”选项。)
答案 0 :(得分:1)
使用批量模拟printf
并不容易。但是PowerShell确实使用composite strings提供了类似的功能。因此,调用PowerShell,您的printf
命令变为:
powershell -command "'='*100" > file.txt
答案 1 :(得分:1)
出于某种原因,我很难打印=符号,但除此之外,这会打印100个-
字符并且没有终止换行符。我一直在寻找是否有解决方法。
@echo off
(
for /L %%A in (1,1,100) do (
<nul set/p =-
)
)>file.txt
答案 2 :(得分:0)
setlocal enabledelayedexpansion
set "x="
for /l %%i in (1,1,100) do set x=!x!=
echo %x%
注意:for
变量(x
是一位数名称。%variable
无法正常工作。
注意:要在命令提示符处使用,请在批处理文件中编写%i
而不是%%i
答案 3 :(得分:0)
为了彻底,这是另一种可能性。不过,这是两个班轮。不过,如果你是基准测试,我认为它将比PowerShell解决方案具有速度优势。
set /p "=for(i=100;i--;)WSH.StdOut.Write('=')"<NUL>tmp.js
>file.txt cscript /nologo tmp.js && del tmp.js
或者,对于一分钱,我想是一磅。按如下方式创建 repeat.js :
for (i=WSH.Arguments(1); i--; ) {
WSH.StdOut.Write(WSH.Arguments(0));
}
然后在需要时将其称为cscript /nologo repeat.js "=" 100 >file.txt
。
答案 4 :(得分:-1)
请参阅For /l
。
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集是一系列数字因此(1,1,5)将生成序列(5 4 3 2 1)