compare.txt:
a_max<=a_min
这是我的批处理文件:
@echo off
for %%n in (1 1 9) do
set \a "is_p=%random%"
set \a "n=%random%"
set \a "a_max=%random%"
set \a "a_min=%random%"
set \a "a_min=%random%"
if "is_p%2"=="1" (%is_p%=1)
if "is_p%2"=="0" (%is_p%=0)
for %%n in (compare.txt) do (
%a_min%=%random%
)
echo %is_p% %n% %a_max% %a_min% >> input.txt
allsort < input.txt > results.txt
)
input.txt中的结果是:
12405 220 26501 3870
12405 220 26501 3870
12405 220 26501 3870
我的问题是:
P.S
英语不是我的母语,所以请容忍我的英语不好,谢谢。 :)
To @ Stephan,%is_p%=%random%表示我想为变量is_p分配一个随机数。
另外,if语句表示如果is_p%2 = 1,则设置is_p = 1.如果is_p%2 = 0,则设置is_p = 0.
更正代码后,它可以运行9次,但每次结果仍然相同。
答案 0 :(得分:0)
1)对于您的第一个for
循环,请使用以下语法:
for /L %%n in (1 1 9) do (
(缺少(
可能是一个错字?)
2)您的主要问题是:在代码块中((
和)
之间的所有变量都会立即进行评估 - 因此所有%random%都是相同的。
您必须setlocal ENABLEDELAYEDEXPANSION
并使用!random!
代替%random%
- )%a_min%=%random%
- 这不是有效的语法 - 您尝试做什么?
3)if "is_p%2"=="1" (%is_p%=1)
- 这不是,你认为它做了什么。我认为你的意思是这样的:
set /a is_p=!is_p! %%2
(您必须将批次中的百分号加倍)