cmd脚本未使用>>导出到文件

时间:2014-03-16 05:17:58

标签: batch-file cmd

我有一个批处理文件,我用它来构建一个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文件,我无法弄清楚原因。

请帮助一些人 谢谢。

3 个答案:

答案 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