我想使用批处理将变量写入多个文本文件,但这不起作用
Set b=5
Set c=13
For /l %%a in (1, 1,100) do (
Echo title
Echo lambda 1.5406
Echo cell %b% %c% 90.00 100.00
Echo end of path
b=%b% + 1
c=%c% + 1
)> path%%a.txt
请帮助
答案 0 :(得分:1)
批量,应该始终避免 空白,更不用说您以错误的方式使用了空白:
Set b = 5
将%b %
设置为 5
不支持批量计算float
。
要解决它:
DelayedExpansion
应该启用。您的脚本应如下所示:
@echo off
====SETLOCAL EnableDelayedExpansion
set/a"b=50, c=131"
for /L %%N in (1,1,100) do (
echo(title
echo(lambda 1.5406
echo(cell !b:~0,-1!.!b:~-1! !c:~0,-1!.!c:~-1! 90.00 100.00
echo(end of path
set/a"b+=1, c+=1"
)>"path%%N.txt"
使用the newline hack缩短了:
@echo off
====SETLOCAL EnableDelayedExpansion
( set LF=^
%= EMPTY =%
)
set/a"b=50, c=131"
for /L %%N in (1,1,100) do (
echo(title!LF!lambda 1.5406!LF!cell !b:~0,-1!.!b:~-1! !c:~0,-1!.!c:~-1! 90.00 100.00!LF!end of path
set/a"b+=1,c+=1"
)>"path%%N.txt"
答案 1 :(得分:0)
使用cmd.exe批处理脚本编程获得成功的结果似乎不太可能。如果您使用的是受支持的Windows系统,则可以使用PowerShell。
=== donumbers.ps1
$b = 5
$c = 13.1
(1..100) |
ForEach-Object {
"title`nlambda 1.5406`ncell {0} {1} 90.00 100.00" -f @($b, $c) |
Out-File -FilePath "C:/src/t/path$_.txt" -Encoding ascii
$b = $b + 0.1
$c = $c + 0.1
}
使用以下命令运行它:
powershell -NoLogo -NoProfile -File .\donumbers.ps1