.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秒执行一次(有延迟比无限死循环更节省系统资源)
边峰妥抒: 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,一般就不会出问题了.