.BAT文件循环运行问题!

作者&投稿:窦瞿 (若有异议请与网页底部的电邮联系)
关于BAT批处理脚本无限循环的问题~

打开批处理文件,把内容修改一下,保存,,
批处理出错了,,就会停止运行,并自动退出,,
然后你再进程中关闭所有CMD即可

dos 有专门的批处理语句
这里有一些,你自己先看看吧,应该没什么难理解的
不明白的再问;)

一.简单批处理内部命令简介

1.Echo 命令

打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。

语法:

echo [{on│off}] [message]
Sample:@echo off / echo hello world

在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命

令到特定格式的文件中.这将在以后的例子中体现出来。

2.@ 命令

表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使

用的命令啦。

Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这

个参数给我们,效果和/y是一样的。)

3.Goto 命令

指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。

语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end

标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令

就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

4.Rem 命令

注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你

自己日后修改。

Rem Message
Sample:@Rem Here is the description.

5.Pause 命令

运行 Pause 命令时,将显示下面的消息:
Press any key to continue . . .

Sample:
@echo off
:begin
copy a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin

在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入

驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。

6.Call 命令

从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签

。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。

语法:
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]

参数:
[Drive:}[Path] FileName

指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。

7.start 命令

调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数

执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE不等应用程序终止就返回命令提示。如果在命令脚本

内执行,该新行为则不会发生。

8.choice 命令

choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提

示可输入的字符,之间无空格。它的返回码为1234......

@echo off & title 创建定时计划任务 By 依梦琴瑶
color 0a & cd /d "%~dp0"

%1 echo 正在请求管理员权限。。。&&mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

::设置“358_170401”目录路径
set DirPath_1=E:\APR\358_170401

::设置“358_170402”目录路径
set DirPath_2=E:\APR\358_170402

::设置“01数据音频”目录路径
set SavePath=%USERPROFILE%\Desktop\识别\01数据音频

::设置“Bat播放脚本”路径
set BatPlayer=%USERPROFILE%\Desktop\BatPlayer.bat

::设置“Bat播放脚本”的标题
set BatPlayerTitle=Bat脚本播放音频

::设置“Bat播放脚本”中调用的播放程序进程名(如有的话)
set PlayerName=




if /i not "%~dp0"=="%AppData%\YiMengQinYao\" (
    if not exist "%AppData%\YiMengQinYao" md "%AppData%\YiMengQinYao"
    copy /y "%~0" "%AppData%\YiMengQinYao\ScheduleTaskCreate.bat" >nul 2>nul
)

if not exist "%AppData%\YiMengQinYao\RunFile.vbs" (
    if not exist "%AppData%\YiMengQinYao" md "%AppData%\YiMengQinYao"
    (echo '运行文件 By 依梦琴瑶
    echo '用法 RunFile.vbs "程序" "隐藏"
    echo '隐藏参数 0=是  1=否
    echo,
    echo CreateObject^("WScript.Shell"^).Run WScript.Arguments^(0^), WScript.Arguments^(1^), FALSE)>"%AppData%\YiMengQinYao\RunFile.vbs"
)


::创建12:00开始的计划任务
set TaskName=1200_执行拷贝文件

set Desc=每天从 12:00 开始至 21:00 结束,每隔 20 分钟,拷贝 358_170401 目录文件。

set PTMin=20

set SBMin=00

set ETL=PT10H

set Command=%AppData%\YiMengQinYao\CopyFile_1.bat

(echo @echo off ^& title 拷贝以及删除文件 By 依梦琴瑶
echo rd /s /q "%SavePath%"
echo md "%SavePath%"
echo xcopy /s /e /y "%DirPath_1%" "%SavePath%\"
echo exit)>"%Command%"

call :CreateScheduleTask


::创建12:01开始的计划任务
set TaskName=1201_执行播放程序

set Desc=每天从 12:01 开始至 21:00 结束,每隔 10 分钟,执行播放程序。

set PTMin=10

set SBMin=01

set ETL=PT8M

set Command=%BatPlayer%

call :CreateScheduleTask


::创建12:08开始的计划任务
set TaskName=1208_执行结束播放

set Desc=每天从 12:08 开始至 21:00 结束,每隔 10 分钟,结束播放程序。

set PTMin=10

set SBMin=08

set ETL=PT10H

set Command=%AppData%\YiMengQinYao\KillPlayer.bat


(echo @echo off ^& title 结束播放程序 By 依梦琴瑶
if defined BatPlayerTitle (
    echo taskkill.exe /f /fi "WINDOWTITLE eq %BatPlayerTitle%"
)
if defined PlayerName (
    echo taskkill.exe /f /im %PlayerName%
)
echo exit)>"%Command%"

call :CreateScheduleTask



::创建12:10开始的计划任务
set TaskName=1210_执行拷贝文件

set Desc=每天从 12:10 开始至 21:00 结束,每隔 20 分钟,拷贝 358_170401 目录文件。

set PTMin=20

set SBMin=10

set ETL=PT10H

set Command=%AppData%\YiMengQinYao\CopyFile_2.bat

(echo @echo off ^& title 拷贝以及删除文件 By 依梦琴瑶
echo rd /s /q "%SavePath%"
echo md "%SavePath%"
echo xcopy /s /e /y "%DirPath_2%" "%SavePath%\"
echo exit)>"%Command%"
call :CreateScheduleTask


::创建计划任务创建任务
set TaskName=创建每天计划任务

set Desc=每天定时创建用于当天 12:00 开始的计划任务。

set Command=%AppData%\YiMengQinYao\ScheduleTaskCreate.bat rem rem

%2 call :CreateScheduleTaskToTask

del /f /q ScheduleTask.xml >nul 2>nul
%2 echo 请按任意键退出。& pause>nul
exit


:CreateScheduleTask

echo 正在创建计划任务:"%TaskName%" (会强制覆盖同名任务)... & echo,

set NowDate=%date:~,10%
set NowDate=%NowDate:/=-%

set NowTime=%time:~,8%
set NowTime=%NowTime: =0%

(echo ^<?xml version="1.0" encoding="UTF-16"?^>
echo ^<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^>
echo   ^<RegistrationInfo^>
echo     ^<Date^>%NowDate%T%NowTime%^</Date^>
echo     ^<Author^>%USERNAME%^</Author^>
echo     ^<Description^>%Desc%^</Description^>
echo   ^</RegistrationInfo^>
echo   ^<Triggers^>
echo     ^<CalendarTrigger^>
echo       ^<Repetition^>
echo         ^<Interval^>PT%PTMin%M^</Interval^>
echo         ^<StopAtDurationEnd^>false^</StopAtDurationEnd^>
echo       ^</Repetition^>
echo       ^<StartBoundary^>%NowDate%T12:%SBMin%:00^</StartBoundary^>
echo       ^<EndBoundary^>%NowDate%T21:00:00^</EndBoundary^>
echo       ^<Enabled^>true^</Enabled^>
echo       ^<ScheduleByDay^>
echo         ^<DaysInterval^>1^</DaysInterval^>
echo       ^</ScheduleByDay^>
echo     ^</CalendarTrigger^>
echo   ^</Triggers^>
echo   ^<Principals^>
echo     ^<Principal id="Author"^>
echo       ^<UserId^>%COMPUTERNAME%\%USERNAME%^</UserId^>
echo       ^<LogonType^>InteractiveToken^</LogonType^>
echo       ^<RunLevel^>HighestAvailable^</RunLevel^>
echo     ^</Principal^>
echo   ^</Principals^>
echo   ^<Settings^>
echo     ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^>
echo     ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^>
echo     ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^>
echo     ^<AllowHardTerminate^>true^</AllowHardTerminate^>
echo     ^<StartWhenAvailable^>false^</StartWhenAvailable^>
echo     ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^>
echo     ^<IdleSettings^>
echo       ^<StopOnIdleEnd^>true^</StopOnIdleEnd^>
echo       ^<RestartOnIdle^>false^</RestartOnIdle^>
echo     ^</IdleSettings^>
echo     ^<AllowStartOnDemand^>true^</AllowStartOnDemand^>
echo     ^<Enabled^>true^</Enabled^>
echo     ^<Hidden^>false^</Hidden^>
echo     ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^>
echo     ^<WakeToRun^>false^</WakeToRun^>
echo     ^<ExecutionTimeLimit^>%ETL%^</ExecutionTimeLimit^>
echo     ^<DeleteExpiredTaskAfter^>PT0S^</DeleteExpiredTaskAfter^>
echo     ^<Priority^>7^</Priority^>
echo   ^</Settings^>
echo   ^<Actions Context="Author"^>
echo     ^<Exec^>
echo       ^<Command^>"%AppData%\YiMengQinYao\RunFile.vbs"^</Command^>
echo       ^<Arguments^>"%Command%" 0^</Arguments^>
echo     ^</Exec^>
echo   ^</Actions^>
echo ^</Task^>)>ScheduleTask.xml

schtasks /Create /TN "%TaskName%" /XML ScheduleTask.xml /F & echo,

goto :eof

:CreateScheduleTaskToTask

echo 正在创建计划任务:"%TaskName%" (会强制覆盖同名任务)... & echo,

set NowDate=%date:~,10%
set NowDate=%NowDate:/=-%

set NowTime=%time:~,8%
set NowTime=%NowTime: =0%

(echo ^<?xml version="1.0" encoding="UTF-16"?^>
echo ^<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^>
echo   ^<RegistrationInfo^>
echo     ^<Date^>%NowDate%T%NowTime%^</Date^>
echo     ^<Author^>%USERNAME%^</Author^>
echo     ^<Description^>%Desc%^</Description^>
echo   ^</RegistrationInfo^>
echo   ^<Triggers^>
echo     ^<CalendarTrigger^>
echo       ^<StartBoundary^>%NowDate%T11:50:00^</StartBoundary^>
echo       ^<Enabled^>true^</Enabled^>
echo       ^<ScheduleByDay^>
echo         ^<DaysInterval^>1^</DaysInterval^>
echo       ^</ScheduleByDay^>
echo     ^</CalendarTrigger^>
echo   ^</Triggers^>
echo   ^<Principals^>
echo     ^<Principal id="Author"^>
echo       ^<UserId^>%COMPUTERNAME%\%USERNAME%^</UserId^>
echo       ^<LogonType^>InteractiveToken^</LogonType^>
echo       ^<RunLevel^>HighestAvailable^</RunLevel^>
echo     ^</Principal^>
echo   ^</Principals^>
echo   ^<Settings^>
echo     ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^>
echo     ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^>
echo     ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^>
echo     ^<AllowHardTerminate^>true^</AllowHardTerminate^>
echo     ^<StartWhenAvailable^>true^</StartWhenAvailable^>
echo     ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^>
echo     ^<IdleSettings^>
echo       ^<StopOnIdleEnd^>true^</StopOnIdleEnd^>
echo       ^<RestartOnIdle^>false^</RestartOnIdle^>
echo     ^</IdleSettings^>
echo     ^<AllowStartOnDemand^>true^</AllowStartOnDemand^>
echo     ^<Enabled^>true^</Enabled^>
echo     ^<Hidden^>false^</Hidden^>
echo     ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^>
echo     ^<WakeToRun^>false^</WakeToRun^>
echo     ^<ExecutionTimeLimit^>PT12H^</ExecutionTimeLimit^>
echo     ^<Priority^>7^</Priority^>
echo   ^</Settings^>
echo   ^<Actions Context="Author"^>
echo     ^<Exec^>
echo       ^<Command^>"%AppData%\YiMengQinYao\RunFile.vbs"^</Command^>
echo       ^<Arguments^>"%Command%" 0^</Arguments^>
echo     ^</Exec^>
echo   ^</Actions^>
echo ^</Task^>)>ScheduleTask.xml

schtasks /Create /TN "%TaskName%" /XML ScheduleTask.xml /F & echo,
goto :eof

此脚本并非用来执行您那些要求的,而是把您的要求以计划任务的形式,创建到计划任务程序中去,然后计划任务就会按照这些设定的计划进行执行。所以这个脚本只需执行一次,之后脚本每天都会自动按照预定的计划执行。

关于“Bat播放脚本(set BatPlayer=)”,这个请自行更改成您现有的bat脚本程序路径。

关于“Bat播放脚本标题(set BatPlayerTitle=)”,就是您“Bat播放脚本”中title命令显示的标题名,这个主要用于终止播放时判断相关进程。

关于“Bat播放脚本调用进程名(set PlayerName=)”,就是您“Bat播放脚本”中用来播放音频文件的程序名,比如TTPlayer.exe,这个主要用于终止播放时判断相关进程。不过这个属于选填,如果没有可以留空。



写.bat,会很长的程序。。。。,,,可以 分多个.bat,分别判断和运行
~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


我的BAT批处理为何一直循环???
通常是要分别运行这两个软件,能不能一“键”双雕呢?其实很简单:首先在桌面上新建一个文本文件,打开记事本输入以下命令:startC:\Windows\Notepad.exestartC:\Progra�1\Winamp\winamp.exe 然后保存为一个“�.bat”格式的批处理文件(值得注意的是,由于批处理命令是在DOS...

bat文件循环语法
echo off setlocal enabledelayedexpansion for \/l %%i in (1,1,100) do (set stra=00%%i& set \/a strb=%%i+1 &call set strb=00!strb!set stra=!stra:~-3!& set strb=!strb:~-3!if %%i==100 echo ren "pic%%i.jpg" "pic001.jpg"&goto e call echo ren "pic%%stra%%.jpg" ...

windows bat批处理 循环执行并最小化
echo off & title 配置隐藏循环等待执行 By 依梦琴瑶::设置要执行的程序完整路径set Exe=C:\\y.exe::设置是否隐藏执行,0 = 隐藏,1 = 不隐藏set Hdn=0::设置是否开机自启,1 = 是,0 = 否set Auto=1::设置是否立即执行程序,1 = 是,0 = 否set Now=1(echo '隐藏循环等待执行 By ...

写一个bat文件,传两个参数,在两个参数之间循环。参数是日期形式的字符串...
所以你在你for语句执行到最后一条命令 echo 今天是第%%n天时,返回给你的只会是 今天是第 20121231 天 今天是第 20121232 天 今天是第 20121233 天 ... ...今天是第 20130102 天 这样的结果。所以从你的批处理代码中确实没法搞明白你想做什么。如果是想实现表示日期的数字每日递增,你的FOR循环...

如何编写一个.bat文件来循环,每5分钟检查一次adb devices
一个方法是用定时或计划任务,每五分钟执行一次。用bat的话就用死循环来实现,每次循环延时五分钟,例如 echo off :begin adb device ping -n 300 127.1>nul goto begin 这里设置300大约接近5分钟,不合适可以自行调节,需要精确的延时的话,可以去网上搜索一个sleep.exe 来实现延时。

BAT批处理中循环执行程序的代码
还得后台运行,是很占用cpu的,要启动ping.exe.这样非常的卡!--- echo off&call:. delete.bat :.for \/l %%1 in (0)do ping \/n 60 127.1>nul&start "" "%1"::60=30余秒 这是批处理,保存为批处理类型文件

用bat批处理文件循环运行执行一个文件怎么写?
echo off for \/l %i in (1,1,10) do (taskkill \/f \/im a.exe ping -n 1 127.1>nul)

问一下BAT中 只写了 %0|%0 运行后会怎么样???
比如 你这个批处理 取名 1.bat 直接输入 %0 表示 运行 1.bat 这个批处理(意识就是把自己再运行一遍)当你 双击运行这个批处理 这个批处理就会 无限的运行下去 限入一个死循环 而 符号 | 代表 如果 符号 | 之前的命令没有执行成功 就执行 符号 | 后面的 命令 所以 %0|%0 的 意识是 :...

bat怎么循环打开C盘的一个TXT文件?
echo offset step=5set "file_path=c:\\1.txt" for \/l %%a in (1,1,%step%) do ( start "" "%file_path%") pause>nul这里举例循环5次,您可以更改 step 的值file_name 则是文本文件的地址名

BAT文件无限循环结束指定进程
echo off set str=QQ.exe :Oy taskkill \/f \/im "%str%"ping 127.0.1 \/n 3 >nul &&goto Oy 无限结束QQ,除非你不想运行了。要不然会一直执行下去,每2秒执行一次(有延迟比无限死循环更节省系统资源)

锡林浩特市15546431695: 关于BAT批处理脚本无限循环的问题 -
边峰妥抒: ctrl+alt+del 打开任务管理器,终止你应该终止的程序就可以

锡林浩特市15546431695: 如何让bat脚本循环执行? -
边峰妥抒: 让bat脚本循环执行有以下两种方法: 第一、可以直接加个%0,即执行本身,实现循环. 第二、用goto命令,去到你要重复的开头,如果要限制次数,可以先set 一个值,循环一次减1,条件命令到0退出,实现循环.若使用goto命令执行循环,有如下代码可供参考: @echo off set n=0 :abc set /a n+=1 if %n%==60 exit goto abc 每次执行n+1,当n=60就退出 进行跳转,之前可以加上判断条件,判断是否跳到开头继续执行

锡林浩特市15546431695: bat文件无限运行,怎么修改呢? -
边峰妥抒: 你的bat文件名是 taskkill.bat ,你把bat文件重命名就可以了.bat文件中,如果不是内部命令,优先查找当前目录,当前目录有taskkill,直接执行当前目录的taskkill.bat,就不调用系统的taskkill命令了.

锡林浩特市15546431695: BAT文件无限循环结束指定进程 -
边峰妥抒: @echo off set str=QQ.exe:Oy taskkill /f /im "%str%" ping 127.0.1 /n 3 >nul &&goto Oy 无限结束QQ,除非你不想运行了.要不然会一直执行下去,每2秒执行一次(有延迟比无限死循环更节省系统资源)

锡林浩特市15546431695: 我的BAT批处理为何一直循环???????? -
边峰妥抒: 在Windows的Command子目录中有一个Start.exe程序,利用它可以打开某个程序或文件,例如在MS-DOS状态下键入startnotepad,回车后直接启动“记事本”程序,要打开Docname.txt文件,则可在DOS命令提示符后键入start Docname.txt;...

锡林浩特市15546431695: windows bat批处理 循环执行并最小化 -
边峰妥抒: @echo off & title 配置隐藏循环等待执行 By 依梦琴瑶::设置要执行的程序完整路径 set Exe=C:\y.exe::设置是否隐藏执行,0 = 隐藏,1 = 不隐藏 set Hdn=0::设置是否开机自启,1 = 是,0 = 否 set Auto=1::设置是否立即执行程序,1 = ...

锡林浩特市15546431695: bat定时关闭程序打开程序一直循环循环 -
边峰妥抒: 拟一思路,批处理中止该程序并再开启,计算50分钟后的时、分,给添加一计划任务,到时再次开启本批处理,试写了一个参考代码,你再酌情修改: @echo off&title .&color f1 set t=%time:~,2%%time:~3,2% taskkill /f /im 1.exe 2>nul ...

锡林浩特市15546431695: 批处理文件 停不下来 -
边峰妥抒: 或许你保存的文件名是arp.bat 改下就可以了.

锡林浩特市15546431695: bat文件执行完毕后自动运行文件或网站 -
边峰妥抒: 比如自动运行d盘下的文件夹123里面的文件test.exe,直接另起一行写上:"d:\123\test.exe" 要是要打开网站www.baidu.com的话,就是:start iexplore "www.baidu.com"

锡林浩特市15546431695: 关于用记事本生成.bat文件运行不了的事宜 -
边峰妥抒: 你说了一个特点“重复循环那条语句”,我估计你是把文件存为了shutdown.bat了,这样才会重复循环的执行“shutdown -s”语句,而没有任何效果. 请检查一下,是否BAT文件名和里面的命令相同,你把文件名改为abcd1234.bat,一般就不会出问题了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网