我正在编写一个批处理脚本,它将文件复制到多个服务器。它将.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。
答案 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