在批处理脚本中逐行删除

时间:2016-08-03 10:11:08

标签: windows batch-file

我正在编写一个批处理脚本,它将文件复制到多个服务器。它将.txt文件中的servername作为变量,并使用它连接到服务器 将名称转换为变量后,我想从文件中删除此条目(并将其保存到另一个文件),以便脚本在再次运行时获取下一个可用的服务器名称。

到目前为止,我写了这个:

@echo off
:start
set /p servername=<server.txt
findstr /v "%servername%" server.txt > serverdone.txt

rem (Part of the script that copies the file, this is already working)

GOTO start

该脚本可以获取server.txt的第一行并将其放入%servername%变量中,但是,findstr行似乎不起作用。 serverdone.txt文件保持为空,脚本只是继续使用server.txt文件中的第一个服务器。我以此问题为指导:Delete certain lines in a txt file via a batch file

1 个答案:

答案 0 :(得分:1)

为什么不使用checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if ( isChecked ) { selectedPostion = getAdapterPostion(); notifydatasetChanged() } } }); 循环逐行读取文件for /F并在该循环中复制内容?我认为这对你来说非常合适。看一下下面的例子:

server.txt

复制内容也可以直接放在@echo off rem This iterates through all lines of `server.txt`: for /F "usebackq delims=" %%S in ("server.txt") do ( rem Call copying sub-routine for each item: call :SUB_COPY %%S ) exit /B :SUB_COPY rem (do your copying stuff here, using `%1`) exit /B 循环中(使用for /F代替%%S)。

如果复制内容可能失败,并且您希望%1包含失败的所有服务器名称,并server.txt包含其成功的服务器名称,则可以执行以下操作:

serverdone.txt