我有一个批处理文件,我用它来构建一个json文件。
我在做什么为每条记录创建一个数字并插入一条带有该记录的网址然后重复,直到创建了所有13797条记录。
我遇到的问题是它没有创建完成的文件。
这是我的档案。
hosts.bat
:start
FOR /F "tokens=1" %%I in (C:\tools\hostslist.txt) do call C:\tools\hosts2.bat %%I
:end
hosts2.bat
set number=0
set link=0
for /f "tokens=1" %%N in (c:\tools\number.txt) do @set /A number=%%N+1
echo %number% > c:\tools\number.txt
echo {"id":%number%,"enabled":true,"flagged":false,"string":"%1%","javaClass":"com.untangle.uvm.node.GenericRule","blocked":true}, >> c:\tools\UTMHosts.txt
Number.txt 只是从1开始并计数
hostslist.txt 有13797个网址就像这样(这只是一个小小的剪辑)
fr.a2dfp.net
m.fr.a2dfp.net
mfr.a2dfp.net
ad.a8.net
asy.a8ww.net
abcstats.com
我的问题是hosts2.bat的最后一部分“>> c:\ tools \ UTMHosts.txt”没有创建txt文件,我无法弄清楚原因。
请帮助一些人 谢谢。答案 0 :(得分:0)
写%1
而不是%1%
。
%1
被翻译为第一个参数,以下%
开始一个新的“变量”。
答案 1 :(得分:0)
这应该运行得更快并且做你需要的:你需要c:\tools
文件夹中的写权限。
@echo off
setlocal enabledelayedexpansion
set number=0
FOR /F "tokens=1" %%a in (C:\tools\hostslist.txt) do (
set /a number+=1
>> c:\tools\UTMHosts.txt echo {"id":!number!,"enabled":true,"flagged":false,"string":"%%a","javaClass":"com.untangle.uvm.node.GenericRule","blocked":true},
)
pause
答案 2 :(得分:0)
你几乎拥有它。
"string":"%1" not "string":"%1%"
将参数Fred传递给appendhost意味着在appendhost中您可以访问参数%1。它与%env_var%。
访问的一般env变量略有不同这有效:
@echo off
set number=0
for /f "tokens=1" %%i in (hosts.txt) do call :appendhost %%i
goto :EOF
REM append json fragment to UTMHost.txt
:appendhost
set /a number+=1
echo {"id":%number%,"enabled":true,"flagged":false,"string":"%1","javaClass":"com.untangle.uvm.node.GenericRule","blocked":true}, >> UTMHosts.txt