将变量写入cmd中for循环内的txt文件

时间:2020-02-21 12:27:54

标签: windows batch-file cmd

我想使用批处理将变量写入多个文本文件,但这不起作用

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

请帮助

2 个答案:

答案 0 :(得分:1)

  1. 批量,应该始终避免 空白,更不用说您以错误的方式使用了空白:
    Set b = 5%b %设置为 5

  2. 不支持批量计算float。 要解决它:

    • 传递到powershell并将输出重定向到您的文件
    • 在下面使用我的方法
  3. 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