[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何实现首次/第一次运行重命名文件,再次/第二次运行则还原文件名?

本帖最后由 pcl_test 于 2016-10-14 13:49 编辑

本人求大牛们给个批使望得到下面的执行效果:
目标文件c:\test\1.gpg,要求使用批处理1.bat重新将1.gpg命名为123.rar.后再运行  1.bat又改回到原来的1.gpg.也就是说使用一个批处理第一次运行把目标文件改名第二次再运行又还原原来的文件名。

[ 本帖最后由 xiewei120120 于 2010-5-28 15:18 编辑 ]

  1. @echo off
  2. findstr /b "::#" "%~fs0">nul&&ren "c:\test\123.rar" "1.gpg"||ren "c:\test\1.gpg" "123.rar"&>>"%~fs0" (echo.&echo.::#)
复制代码
第一次运行时,因为批处理内不存在::#的行而执行ren "c:\test\1.gpg" "123.rar",同时执行echo.&echo.::#输出到批处理中。
以后再运行时,因存在行::#而执行ren "c:\test\123.rar" "1.gpg"。
注意:本批处理只适用于操作两次。

[ 本帖最后由 hanyeguxing 于 2010-5-28 16:37 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

已解决

批的功能太强大了谢谢大牛

这个批确实能达到我要求的功能但我测试后发现批在以后的运行后会自动写入::#  这样的话这个批会越来越大,可不可以改进下,在能达到求后不再,生成的的::#.有请 寒夜孤星 兄弟再改进下

[ 本帖最后由 xiewei120120 于 2010-5-28 20:14 编辑 ]

TOP

1,这个批处理只会写入1次::#
2,
  1. @echo off
  2. if exist han.h (set/p p=<han.h) else set p=0
  3. if %p%==0 (echo.1) else echo.0)>han.h
  4. if %p%==0 (ren "c:\test\1.gpg" "123.rar") else ren "c:\test\123.rar" "1.gpg"
复制代码
第奇数次运行时,执行ren "c:\test\1.gpg" "123.rar"。
第偶数次运行时,执行ren "c:\test\123.rar" "1.gpg"。
han.h为运行记录文件,使用时间内不能删除。删除后从新开始计算。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off
  2. set "FilePath=c:\test\1.gpg"
  3. set "NewName=123.rar"
  4. for /f "tokens=1,2 delims=|" %%a in ("%FilePath%|%NewName%") do (
  5.     if exist "%%a" (
  6.         ren "%%a" "%%b"
  7.     ) else (
  8.         if exist "%%~dpa%%b" ren "%%~dpa%%b" "%%~nxa"
  9.     )
  10. )
复制代码

[ 本帖最后由 del 于 2010-5-29 08:52 编辑 ]

TOP

批太强大了,看了楼上两位仁兄的作品真想好好学习下!!

由于本人水平太差,但现在又有工作生活上的对批的特殊要求所以希望大哥级兄弟们再帮小弟写这样一个批,要求:
1要求一个批隐藏运行,
2:监视QQ进程如果发现有此进程运行则断开网络,如果进程退出则恢复网络

[ 本帖最后由 xiewei120120 于 2010-5-29 11:43 编辑 ]

TOP

这实现很简单.但是如果把QQ重命名一下的话.进程里就会有QQ.exe进程了

TOP

@echo off
tasklist >> a.txt
type a.txt|find /i "qq.exe" && taskkill /f /im qq.exe || echo 没有
pause

TOP

原帖由 小波子 于 2010-5-29 11:52 发表
@echo off
tasklist >> a.txt
type a.txt|find /i "qq.exe" && taskkill /f /im qq.exe || echo 没有
pause



这个批应是查到到QQ的进程并终止,但我想要的是随时监视这个QQ进程只要有就断网,如进程退出了则恢复网络

TOP

返回列表