Batch file 如何在windows批处理中执行while循环
我编写了一个windows批处理脚本,根据我放在一个名为list.txt的记事本文件中的列表来检查文件并将其移动到另一个目录。但是我不知道如何设置while循环。只在条件满足时跳出子例程 在C编程中,我们可以通过直接设置while循环来编写这样的代码。但在windows中,批处理似乎完全不同 我想要的就是这样: 目录A:Batch file 如何在windows批处理中执行while循环,batch-file,for-loop,while-loop,cmd,timeout,Batch File,For Loop,While Loop,Cmd,Timeout,我编写了一个windows批处理脚本,根据我放在一个名为list.txt的记事本文件中的列表来检查文件并将其移动到另一个目录。但是我不知道如何设置while循环。只在条件满足时跳出子例程 在C编程中,我们可以通过直接设置while循环来编写这样的代码。但在windows中,批处理似乎完全不同 我想要的就是这样: 目录A: 1. A.txt 2. B.txt 3. list.txt (By line sequential with filename want to move) 4.
1. A.txt
2. B.txt
3. list.txt (By line sequential with filename want to move)
4. process.bat
目录B:
然后,所有文件都不会按list.txt或中设置的行顺序移动文件
A.txt如果目录中已经存在文本文件,process.bat将在A.txt消失之前暂停
过程.bat
@echo off
:readline
for /f "tokens=*" %%a in (list.txt) do call :processline %%a
goto :eof
:processline
if exist D:\DirectoryA\*.txt (
echo %time% >> D:\AutoLog\Log.txt
echo Previous job did not finished yet. >> D:\AutoLog\Log.txt
Timeout /t 30
echo.
)
set name=%*
if exist %name%.txt (
echo %time% >> D:\AutoLog\Log.txt
echo File found and processing %name%.txt now... >> D:\AutoLog\Log.txt
copy "%~dp0\%name%.txt" "D:\DirectoryB"
echo Transfer %name%.txt completed!! >> D:\AutoLog\Log.txt
echo. >> D:\AutoLog\Log.txt
Timeout /t 790
echo.
echo ==============================================================
)
:eof
请指导我使用while循环方法完成脚本。谢谢我更改了一些脚本序列,现在就可以了
@echo off
:readline
for /f "tokens=*" %%a in (list.txt) do call :processline %%a
goto :eof
:processline
set name=%*
if exist C:\Test2\*.txt (
echo %date% %time% >> C:\Test2\Log.txt
echo Previous job did not finished yet. >> C:\Test2\Log.txt
Timeout /t 5
echo.
echo. >> C:\Test2\Log.txt
goto :processline
)
if exist %name%.txt (
echo %date% %time% >> C:\Test2\Log.txt
echo File found and processing %name%.txt now... >> C:\Test2\Log.txt
copy "%~dp0\%name%.txt" "C:\Test2"
echo Transfer %name%.txt completed!! >> C:\Test2\Log.txt
echo. >> C:\Test2\Log.txt
Timeout /t 10
echo.
echo ==============================================================
)
:eof
这将复制并计算文本文件中的行数
@ echo off
:TextPath
cls
set /p Input=#1 Enter the full path of the text file :
set /p Source=#2 Enter the full path of Source :
set /p Target=#3 Enter the full path of Destination :
:choice
set /P c=Ready to Continue[Y/N]?
if /I "%c%" EQU "Y" goto :Yes
if /I "%c%" EQU "N" goto :No
goto :choice
:Yes_Local
for /f "delims=" %%i in (%Input%) do echo f| xcopy /f /y "%Source%\%%i" "%Target%\%%i"
for /f %%C in ('Find /V /C "" ^< %Input%') do set Count=%%C
msg * No of Lines executed= %Count%
exit
:No
cls
color e
echo Redirecting to Main....
PING 127.0.0.1 -n 2 >NUL
cls
echo Please wait
PING 127.0.0.1 -n 4 >NUL
goto TextPath
可能重复尝试此站点它将复制并计算文本文件中的行数…: