bat脚本--循环执行一个不同“值”

人生如朝露 2018-10-24 11:05:35
如题:
说明:现在有脚本A,文件B。我需要从文件B中调用数据,到脚本A中。而脚本A循环执行。直到出现重复值。该怎么写出这样一个脚本。
...全文
262 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
人生如朝露 2018-10-30
  • 打赏
  • 举报
回复
谢谢。试了一下确实可以。现在正在看怎么用到正式环境中。
A脚本:
@echo off
echo name="%1" >tmp\%1.txt
echo ^<workspace^> >>tmp\%1.txt
echo ^<textcolor^>#%2^</textcolor^> >>tmp\%1.txt
echo ^<drawer^> >>tmp\%1.txt
echo ^<textcolor^>#%3^</textcolor^> >>tmp\%1.txt
type tmp\%1.txt
del tmp\%1.txt
B文件:
192.168.1.1 admin1 passwd1
192.168.2.1 admin2 passwd2
192.168.3.1 admin3 passwd3
192.168.4.1 admin4 passwd4
192.168.5.1 admin5 passwd5
C执行文件:
@echo off
rd /q /s tmp
md tmp
for /f "delims=" %%i in (B.txt) do (
if exist tmp\%%i (
echo stop > tmp\stop
echo "冲突"%%i
goto exit
) else (
A.bat %%i >> tmp\output.txt
)
)
:exit
(从B中导入数据到A文件中,再生成 output文件)
X-i-n 2018-10-26
  • 打赏
  • 举报
回复
直接套我发的脚本就行了啊,读一行处理一行。 把示例c.bat的a.bat %%i > tmp\%%i 这句换成 a.bat %%i >> tmp\output.txt 把示例a.bat的内容换成

@echo off
echo name="%1" >tmp\%1.txt
echo ^<workspace^> >>tmp\%1.txt
echo ^<textcolor^>#%2^</textcolor^> >>tmp\%1.txt
echo ^<drawer^> >>tmp\%1.txt
echo ^<textcolor^>#%3^</textcolor^> >>tmp\%1.txt
type tmp\%1.txt
del tmp\%1.txt
X-i-n 2018-10-25
  • 打赏
  • 举报
回复
上面的逻辑是发现重复,就取消后面所有的处理(包括新的不同值)。 如果只是想单纯地跳过重复值,继续处理下面的。因为在批处理中处理循环的时候,会展开所有变量,在单次循环里跳出并不会影响其它循环。
@echo off
rd /q /s tmp
md tmp
for /f "delims=" %%i in (b.txt) do (
	if exist tmp\%%i (
		echo stop > tmp\stop
		echo "冲突"%%i
		goto exit
	) else (
		a.bat %%i > tmp\%%i
	)
)
:exit
X-i-n 2018-10-25
  • 打赏
  • 举报
回复
按行处理b.txt,每次处理,按取值生成文件,发现已有文件说明重复了,退出for a.bat,你的原始脚本A
@echo off
echo %1
b.txt,数据文件B
line1
line2
line1
line4
line5
c.bat
@echo off
rd /q /s tmp
md tmp
for /f "delims=" %%i in (b.txt) do (
	if exist tmp\%%i (
		echo stop > tmp\stop
		echo "冲突"%%i
		goto exit
	) else (
		if  exist tmp\stop (
			goto exit
		) else (
			a.bat %%i > tmp\%%i
		)
	)
)
:exit
人生如朝露 2018-10-25
  • 打赏
  • 举报
回复
不好意思。可能是我说的不够详细。这个脚本的关键不在循环,而在取值。
例如:
B文件为:
192.168.1.1 admin1 passwd1
192.168.2.1 admin2 passwd2
192.168.3.1 admin3 passwd3
192.168.4.1 admin4 passwd4
192.168.5.1 admin5 passwd5

A脚本为:
name="你好"
<workspace>
<textcolor>#FFFFFF</textcolor>
<drawer>
<textcolor>#000000</textcolor>

生成的C文件为(或者不生成C文件,在A把第一行的数据导入到B脚本后执行B脚本。然后再把A文件第二行的数据导入B。再执行B,这样循环)
name="192.168.2.1"
<workspace>
<textcolor>#admin2 </textcolor>
<drawer>
<textcolor>#passwd2</textcolor>
name="192.168.3.1"
<workspace>
<textcolor>#admin3</textcolor>
<drawer>
<textcolor>#passwd3</textcolor>
<textcolor>#000000</textcolor>
aabbabababaa 2018-10-24
  • 打赏
  • 举报
回复
要读取文件值?要python写,可能简单些吧

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧