Powershell 使用Windows批处理文件仅从文本文件中获取第一行
我正在尝试从我的文本文件(其数据已按降序排序)中提取第一行(实际上是第一个数字),如下所示:Powershell 使用Windows批处理文件仅从文本文件中获取第一行,powershell,batch-file,Powershell,Batch File,我正在尝试从我的文本文件(其数据已按降序排序)中提取第一行(实际上是第一个数字),如下所示: set /p lastnum =< sorted.txt pause echo !lastnum! pause set /A lastNum = lastNum+1 echo !lastnum! pause sorted.txt: 10 9 8 7 6 5 4 3 2 1 如果我做错了什么,请告诉我。sorted.txt的长度每次都会变化,第一个值也会变化。但始终必须获取最大的数字(即第一行)
set /p lastnum =< sorted.txt
pause
echo !lastnum!
pause
set /A lastNum = lastNum+1
echo !lastnum!
pause
sorted.txt
:
10
9
8
7
6
5
4
3
2
1
如果我做错了什么,请告诉我。sorted.txt的长度每次都会变化,第一个值也会变化。但始终必须获取最大的数字(即第一行)
我也尝试了以下PowerShell脚本:
powershell.exe -Command $lastnum = Get-Content -LiteralPath "C:\offsite\sorted.txt" | ForEach-Object { $Output += [Int]($_.Trim()) }
但它仍然不起作用 set/p lastnum= set /p lastnum =< sorted.txt
设置变量%lastnum%
(或!lastnum!
延迟扩展)。=
前面的空格获取变量名的一部分。(在set var=val
中=
后面的空格将获得部分值。)
(set/a
工作方式不同:忽略空格。)set/p lastnum=
设置变量%lastnum%
(或!lastnum!
延迟扩展)。=
前面的空格获取变量名的一部分。(在set var=val
中=
后面的空格将获得部分值。)
(
set/a
工作方式不同:忽略空格。)使用Powershell,您的命令调用如下所示:
(Get-Content 'C:\offsite\sorted.txt').Split([environment]::newline)[0]
使用Powershell,您的命令调用如下所示:
(Get-Content 'C:\offsite\sorted.txt').Split([environment]::newline)[0]
您发布的代码应该回显文本字符串“!lastnum!”两次,因为您不启用延迟扩展。但即使启用延迟扩展或更改
到%
由于赋值过程中变量名和=
之间存在空格,这将成为变量名的一部分(%lastnum%
)
将代码更改为:
set/p lastnum=您发布的代码应该回显文本字符串“!lastnum!”两次,因为您不启用延迟扩展。但即使启用延迟扩展或更改
到%
由于赋值过程中变量名和=
之间存在空格,这将成为变量名的一部分(%lastnum%
)
将代码更改为:
set/p lastnum=如果我删除符号前后的空格,我仍然得到不正确的输出=按任意键继续。■7按任意键继续。1按任意键继续。确保将sorted.txt保存为ANSI。批处理不能很好地处理UTF-8.sorted.txt是由另一个逻辑实时生成的,该逻辑在itI中排序和写入数据。如果我删除符号前后的空格,我仍然得到不正确的输出=按任意键继续。■7按任意键继续。1按任意键继续。确保将sorted.txt保存为ANSI。批处理不能很好地处理UTF-8.sorted.txt是由另一个逻辑实时生成的,该逻辑对其中的数据进行排序和写入。在问新问题之前接受最后一个问题的答案如何?在问新问题之前接受最后一个问题的答案如何?谢谢…现在我已经尝试了这个Powershell.exe-executionpolicy remotesigned-文件C:\offsite\highest.ps1 set/p lastnum=谢谢…现在我已经尝试了这个Powershell.exe-executionpolicy remotesigned-文件C:\offsite\highest.ps1 set/p lastnum=