| 
 
falcon 
新手上路
 
 
 
  
  
积分 10 
发帖 3 
注册 2006-5-8 来自 陕西西安 
状态 离线
 | 
『楼 主』:
 求教:怎样把由 RANDOM 获得的随机数值写入文件
 
使用 LLM 解释/回答一下
  
怎样把由 RANDOM 获得的随机数值写入文件指定位置 
 
 Last edited by falcon on 2006-5-8 at 14:08 ] 
 
    
 
  
 |   
 | 
  2006-5-8 13:33 | 
  
 | 
 | 
 
bagpipe 
银牌会员
 
      DOS联盟捡破烂的
  
 
积分 1144 
发帖 425 
注册 2005-10-20 来自 北京 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
这个要看你要写入什么样的文件中去了,有些不明确,应该详细点,例如,写在哪几行,有没有固定位置,总之,这个问题我是没法回答你 
 
    
 
  
 |   
 | 
  2006-5-8 16:52 | 
  
 | 
 | 
 
3742668 
荣誉版主
 
       
 
  
  
积分 2013 
发帖 718 
注册 2006-2-18 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
纯粹地用批处理来完成的话效率以及容错都不是很理想。 
简要地说一下步骤: 
    先用for /f "tokens=1,2* delims=:" %%i in ('"findstr /n . file.txt"') do set %%i=%%j & set num=%%i把文件内容全部保存到以行数为名的变量中,并把行的总数保存到变量num中。 
    然后根据要求修改指定行的内容。可以用set var=%var:~0,修改内容之前的字符数%%random%%后面的内容% 
  最后,用for读取源文本内容并计数,到被替换行的上一行退出for,然后用echo把替换后的行写到新文件中,再用for的skip参数跳过替换行后把剩下的内容追加到新文件中。 
 
    
 
  
 |   
 | 
  2006-5-8 21:39 | 
  
 | 
 | 
 
falcon 
新手上路
 
 
 
  
  
积分 10 
发帖 3 
注册 2006-5-8 来自 陕西西安 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
我写的内容: 
@echo off 
random 1 255 
 
 
echo IP=192.168.0.%random%> Wattcp.cfg 
echo NETMASK=255.255.255.0>> Wattcp.cfg 
echo GATEWAY=192.168.0.1>> Wattcp.cfg 
 
set random= 
 
end 
 
 
我想把得到的数写入Wattcp.cfg的指定位置 可以实现吗? 
 
三楼的内容 我试了 但是不是很理想 可能我的语法有问题吧? 
 
 Last edited by falcon on 2006-5-9 at 10:33 ] 
 
    
 
  
 |   
 | 
  2006-5-9 10:29 | 
  
 | 
 | 
 
3742668 
荣誉版主
 
       
 
  
  
积分 2013 
发帖 718 
注册 2006-2-18 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
为什么不尝试用vbs来操作呢? 
vbs相对来说效率应该好得多,bat在处理特殊字符的时候会有点力不从心。 
你可以参考一下 这个贴子,你要求的功能应该和里面的差不多,里面的批处理脚本和vbs脚本你稍做修改就可以实现你的要求了。  
 
    
 
  
 |   
 | 
  2006-5-9 12:21 | 
  
 | 
 | 
 
bagpipe 
银牌会员
 
      DOS联盟捡破烂的
  
 
积分 1144 
发帖 425 
注册 2005-10-20 来自 北京 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
::第一种情况,顺序的写入,每段中间有空行。 
 
@echo off 
for /l %%i in (1,1,255) do ( 
echo IP=192.168.0.%%i>>Wattcp.cfg 
echo NETMASK=255.255.255.0>>Wattcp.cfg 
echo GATEWAY=192.168.0.1>>Wattcp.cfg 
echo.>>Wattcp.cfg 
) 
 
 
::第二种情况,随机数写入,因为你是以IP地址为基础,不可能有192.168.1.263563 这样的IP地址吧,所以也只能将就用下面的来实现随机了 
@echo off 
setlocal 
echo.>Wattcp.cfg 
:B 
set /a p+=1 
if p==5 goto :eof 
set ii=%random:~0,3% 
if %ii% leq 255 ( 
for /f "tokens=1,2* delims==" %%i in ('findstr /x "IP=192.168.0.%ii%" Wattcp.cfg') do set uu=%%j 
if "%uu%"=="192.168.0.%ii%" goto A 
echo IP=192.168.0.%ii%>>Wattcp.cfg 
echo NETMASK=255.255.255.0>>Wattcp.cfg 
echo GATEWAY=192.168.0.1>>Wattcp.cfg 
echo.>>Wattcp.cfg 
) else ( 
goto A 
) 
 
:A 
 
set i=%random:~0,2% 
set k=%random:~0,1% 
 
for /f "tokens=1,2* delims==" %%i in ('findstr /x "IP=192.168.0.%i%" Wattcp.cfg') do set uu=%%j 
if "%uu%"=="192.168.0.%i%" goto B 
echo IP=192.168.0.%i%>>Wattcp.cfg 
echo NETMASK=255.255.255.0>>Wattcp.cfg 
echo GATEWAY=192.168.0.1>>Wattcp.cfg 
echo.>>Wattcp.cfg 
for /f "tokens=1,2* delims==" %%i in ('findstr /x "IP=192.168.0.%k%" Wattcp.cfg') do set uu=%%j 
if "%uu%"=="192.168.0.%k%" goto B 
echo IP=192.168.0.%k%>>Wattcp.cfg 
echo NETMASK=255.255.255.0>>Wattcp.cfg 
echo GATEWAY=192.168.0.1>>Wattcp.cfg 
echo.>>Wattcp.cfg 
 
goto B 
 
 
 
批处理我也只能给你写成这个样子了................. 
 
    
 
  
 |   
 | 
  2006-5-9 15:00 | 
  
 | 
 | 
 
willsort 
元老会员
 
          Batchinger
  
 
积分 4432 
发帖 1512 
注册 2002-10-18 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
Re falcon: 
      你的问题描述仍然不清晰,我无法断定你的“指定位置”究竟是如何指定的?如果是行号+列号或者行号+特征串的指定可以参考3楼的算法,如果是特征行的指定可以借鉴6楼的方案。
 
      另外,请注明你的使用环境,是MSDOS,Win98命令行或者WinXP命令行?
 
Re bagpipe:
 
      感觉你的第二方案过于复杂了,可能是因为对随机IP的区分处理造成的。在CMD下取1~255的随机IP可以使用下面的代码:
  
set /a rnd=%random% %% 255 + 1 
 
已根据bagpipe兄在10楼的指正意见进行修改
 Last edited by willsort on 2006-5-11 at 16:06 ]  
 
    
 
  
  |  
                  
  
                    ※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |   
 | 
  2006-5-9 17:35 | 
  
 | 
 | 
 
falcon 
新手上路
 
 
 
  
  
积分 10 
发帖 3 
注册 2006-5-8 来自 陕西西安 
状态 离线
 | 
 | 
  2006-5-9 19:09 | 
  
 | 
 | 
 
bagpipe 
银牌会员
 
      DOS联盟捡破烂的
  
 
积分 1144 
发帖 425 
注册 2005-10-20 来自 北京 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
是啊,willsort兄要是早来我就不用这么费劲了,有些复杂了而且过于烦琐,受益匪浅....    谢WILLSORT兄指点迷津.... 
 
    
 
  
 |   
 | 
  2006-5-10 08:45 | 
  
 | 
 | 
 
bagpipe 
银牌会员
 
      DOS联盟捡破烂的
  
 
积分 1144 
发帖 425 
注册 2005-10-20 来自 北京 
状态 离线
 | 
 | 
  2006-5-10 08:57 | 
  
 |