重命名程序日志--批处理延时启动的几个方法

@echo off

taskkill /f /im "3CSyslog.EXE"

choice /t 1 /d y /n >nul

cd E:\PIX_LOG

del syslog.log333

choice /t 1 /d y /n >nul

ren syslog.log222 syslog.log333

choice /t 1 /d y /n >nul

ren syslog.log111 syslog.log222

choice /t 1 /d y /n >nul

ren syslog.log000 syslog.log111

choice /t 1 /d y /n >nul

ren syslog.log syslog.log000

choice /t 1 /d y /n >nul

start "" "E:\3CSyslog.EXE"

choice /t 5 /d y /n >nul



批处理延时启动的几个方法
方法一:ping
缺点:时间精度为1秒,不够精确
Cmd代码 收藏代码
@echo off
@ping 127.0.0.1 -n 6 > nul
start gdh.txt

方法二:vbs start /wait
缺点:生成临时文件
优点:时间精度为0.001秒,精度高
Cmd代码 收藏代码
@echo off
echo wscript.sleep 5000 > sleep.vbs
start /wait sleep.vbs
start gdh.txt
del /f /s /q sleep.vbs

方法三:vbs cscript
Cmd代码 收藏代码
@echo off
echo wscript.sleep 5000 > sleep.vbs
@cscript sleep.vbs > nul
start gdh.txt
del /f /s /q sleep.vbs

方法四:choice
优点:时间精确,CPU占用低,是最佳选择
Cmd代码 收藏代码
@echo off
choice /t 5 /d y /n > nul
start gdh.txt

方法五:for+set+if,时间精度为0.01秒
缺点:CPU占用高,语句过长,不常用
Cmd代码 收藏代码
@echo off
setlocal enableextensions
echo %time%
call :ProcDelay 500
echo %time%
start gdh.txt
:ProcDelay delayMSec
setlocal enableextensions
for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set start
=%%h%%i%%j%%k
:procwaitloop
for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set now
=%%h%%i%%j%%k
set /a diff=%now%-%start%
if %diff
% LSS %1 goto _procwaitloop
endlocal & goto :EOF

我使用的是这个批处理,唯一不好就是有窗口
Cmd代码 收藏代码
@echo off
:: 模拟进度,有剩余时间、已完成进度、进度条的显示
:: code by
color 1f
title.
mode con lines=10
rem 进度条 ▉▉▉▉▉
set work=0
set n=0
set mo=0
set number=0
rem all是总数
set all=10
set time=%all%
:show

:check
if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check

:2

cls
echo 进度: %n% / %all% ★程序正在启动请稍等★ 剩余时间:%time%秒
echo.
echo.
echo 完成 %work% %%%
echo.
if not "%num%"=="" echo %num%
if not "%num%"=="" echo %num%

if %work%==100 goto end

ping 127.1 -n 2 >nul
set /a n=%n%+1
set /a time=%all%-%n%
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto show
endlocal

:end
@echo off
start C:\Progra~1\tools\xsdy\1.exe
exit

Choice 命令

使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……。这个命令在有些Windows版本(比如WindowsXP)上可能不可用。

语法:
CHOICE:[/C[:]按键表] [/N] [/S] [/T[:]选择值,秒数] [显示文本]
其中,/C表示可选则的按键,/N表示不要显示提示信息,/S表示大小写字符敏感方式,/T表示若在批定的时间内没有选择的话,自动执行/C中定义的某个选择值。显示文本是CHOICE命令执行时的提示信息。选择结果将用ERRORLEVEL值来表示。

示例:

?

1234567891011121314151617

@echo offchoice /c:dme defrag,mem,endif errorlevel 3 goto defrag REM 应先判断数值最高的错误码if errorlevel 2 goto memif errorlevel 1 goto end :defragc:\dos\defraggoto end :memmemgoto end :endecho good bye

此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。

可替换的命令

对WindowsXP上不能使用CHOICE命令的情形,如果想使用相似的功能,可以使用 SET 命令,参见Set 命令 /P选项。

choice一般在cmd批处理中用来根据用户输入执行不同的操作,非常实用,例如

下面是两个软件根据用户选择来执行

?

123456789101112131415161718192021222324252627282930

@echo off远程协助工具集:startclscolor 0aMODE con: COLS=60 LINES=20echo.echo ===============================echo 请选择远程工具echo ===============================echo.echo 1. AnyDeskecho.echo 2. TeamViewerecho.echo.:choset choice=set /p choice= 请输入工具编号:IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%if /i "%choice%"=="1" goto AnyDeskif /i "%choice%"=="2" goto TeamViewer :AnyDeskAnyDesk.exeexit :TeamViewerTeamViewer.exeexit

下面来介绍一下choice的命令使用

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

描述:
该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

参数列表:
/C choices 指定要创建的选项列表。默认列表是 "YN"。

/N 在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。

/CS 允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。

/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0到 9999。如果指定了 0,就不会有暂停,默认选项会得到选择。

/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

/M text 指定提示之前要显示的消息。如果没有指定,工具只显示提示。

/? 显示此帮助消息。

注意:
ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。

示例:
CHOICE /?
CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"

下面是来自国外网站的介绍

The CHOICE command was introduced in MS-DOS 6 and is still available in MS-DOS 7 (Windows 95/98).

In Windows NT 4, 2000 and XP, CHOICE is no longer a part of the standard distribution. It is, however, available as part of the Windows NT 4 Resouce Kit.
On the other hand, if you still have that old unused MS-DOS 6 or Windows 95/98 version lying around, you can use the CHOICE.COM from that version instead. (*)
Just copy it to a directory that is in your PATH.

Note: 16-bit DOS versions will not work in 64-bit Windows versions.
CHOICE is available again in Windows Vista and later versions.

大部分意思就是 这个命令会在以后的系统中一直存在,但注意16位的系统无法在64位系统自带了,而我们安装的64位系统已经集成了64的choice命令,大家可以放心使用。

注释
ERRORVALUE 环境变量被设置为用户从选择列表中选择的键的索引。您指派的第一个键将返回值 1,第二个将返回值 2,第三个将返回值 3,依此类推。如果用户按下一个不在您指派的键中间的键,Choice.exe 将发出警告声(即,它向控制台发送一个 BEL 或 07h 字符)。如果 Choice.exe 检测到错误情况,它就会返回错误值 255。如果用户按 Ctrl+Break 或 Ctrl+C,Choice.exe 就会返回错误值 0。当您在批处理程序中使用错误值参数时,请将它们以降序列出。

示例
请在批处理文件中键入下列语法:
choice /c ync
运行 Choice.exe 时出现下列语句:
[Y,N,C]?
请在批处理文件中键入下列语法:
choice /c ync /n /m Yes, No or Continue?
运行 Choice.exe 时出现下列语句:
Yes, No, or Continue?
按如下方式将文字添加到语法中:
choice /c ync /m Yes, No, or Continue
运行 Choice.exe 时出现下列语句:
Yes, No, or Continue [Y,N,C]?
/t 命令行选项将设置一个时间限制(在该限制内用户必须响应),并指定当用户在该时间限制内没有作出响应时将显示的值。要将时间限制设置为五秒并指定 N 作为默认值,请在批处理程序中键入下列命令行:
choice /c ync /t 5 /d n
当批处理文件启动 Choice.exe 时,将出现下列消息:
[Y,N,C]?
如果用户未能在五秒钟内按下一个键,Choice.exe 将选择 N 并返回错误值 2。否则,Choice 将返回与用户所选对应的值。

原文地址:http://blog.51cto.com/14143114/2336369

时间: 2024-11-09 03:07:58

重命名程序日志--批处理延时启动的几个方法的相关文章

重命名Apache日志,新日志文件会放在哪里

重命名access.log为access.log.bak,请问新的apache日志会放在哪? 本文转自51cto的李导的博客2017-09-30-08:11:41 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lidao.blog.51cto.com/3388056/1936543 题目 假设Apache 产生的日志文件名为access_log,在apache 正在运行时,执行命令mv access_log access_l

Python批量重命名指定文件夹下文件的两种方法

#法一 import os path = "C://Python34//" for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: if file.find('.')<0: newname=file+'.jpg' os.rename(os.path.join(path,file),os.path.join(path,newname)) #法二 import os import

如何在 Linux 中批量移动、复制、追加和重命名文件

你可能已经知道,我们使用 mv 命令在类 Unix 操作系统中重命名或者移动文件和目录. 但是,mv 命令不支持一次重命名多个文件. 不用担心. 在本教程中,我们将学习使用 Linux 中的 mmv 命令一次重命名多个文件. 此命令用于在类 Unix 操作系统中使用标准通配符批量移动.复制.追加和重命名文件. 在 Linux 中一次重命名多个文件 mmv 程序可在基于 Debian 的系统的默认仓库中使用. 要想在 Debian.Ubuntu.Linux Mint 上安装它,请运行以下命令: $

kvm虚拟机的重命名

1.查看所有的kvm虚拟机 [[email protected]_kvm ~]# virsh list --all 2.重命名kvm虚拟机最好是将虚拟机先关机,然后再导出其xml文件 [[email protected]_kvm ~]# cd /etc/libvirt/qemu [[email protected]_kvm qemu]# virsh dumpxml kvm_client00 > kvm_00.xml 3.为了让重命名后的虚拟机名字与磁盘文件名一致.我们可以先将之前的磁盘文件命名成

2.13 批量重命名和移动

rename命令利用Perl正则表达式修改文件名.综合运用find.rename和mv. 1.用特定的格式重命名当前目录下的图像文件,最简单的方法是使用下面的脚本: #!/bin/bash #文件名:rename.sh #用途:重命名.jpg和.png文件 count=1; for img in `find . -iname '*.png' -o -iname  '*.jpg' -type f -maxdepth 1` do new=image-$count.${img##*.} echo "R

批量创建用户与批量文件重命名

title: 批量创建用户与批量文件重命名 tags: 批量,用户,创建,重命名 批量创建用户与批量文件重命名 1. 批量创建用户 如果需要批量创建用户,且用户名为stu01-stu10,用户密码为随机的10位密码. 1.1 分析解答 如果用户名为stu01的话,我们可以采用for循环,直接变量范围为01-10,密码随机的话我们可以采用系统默认的随机变量RANDOM,因为默认的RANDOM只有5位数字,因此我们可以给它md5加密,然后取其中的8位字符当做密码.当然我们也可以不用循环,直接使用命令

教你在Win10电脑中给照片快速批量重命名的方法

我们在win10系统电脑的使用中,有时候在一些工作上的小气叫可以帮助我们在工作中做到事半功倍的效果,有小伙伴想要实现在win10中批量给图片重命名的操作方法,今天小编就来把方法分享给大家,一起来看一下教你在Win10电脑中给照片快速批量重命名的方法. 具体的方法和详细的步骤如下: 1.把所有需要重命名的照片放入同一个文件夹中,例如"2016年10月连云港旅游留念",全部选中这些照片,然后在第一张照片上点右键选择"重命名": 2.重命名为"2016年10月连

delphi 文件的操作:重命名、复制、移动、删除

Delphi 文件的操作:重命名.复制.移动.删除第一种方法: RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar('Newname'), False); MoveFile(PChar('Oldname'), PChar('Newname')); DeleteFile(文件名); 第二种方法: 在Delphi可以使用ShellApi单元中的函数SHFileOperation来实现消息上传控件的制作, SHFileO

[批处理]自动按日期重命名文件名

简述: 最近在整理我爷爷拍的相片,大多是在02-06年间拍的相片 但是在整理起来发现难度很大,因为我爷爷的相机是联想很早很早出品的一款相机 在文件名编制上有些缺陷,每次照相得到的相片编号都是按天编排 即每天一个文件夹,只是在每个文件夹中按001,002,003这样排下去 但是问题在于在不同文件夹中,他们都是相同的文件名,全是001,001,001,001,如果就这样分别放到不同文件夹下也可以 但是由于相片数量巨大一共有六千多张, 被分别放到了将近三百个文件夹中,查看起来异常繁琐... 而且无法把