找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 58340|回复: 27

[ 新手练习题 5 ] 文件与目录相互替换

[复制链接]
发表于 2009-6-18 12:52:00 | 显示全部楼层 |阅读模式
[ 新手练习题 5 ] 文件与目录相互替换
检测批处理所在目录是否存在 LOGFILE 文件/目录。
如果 LOGFILE 是文件,则用同名目录替换它;反之则用同名文件替换名为 LOGFILE 的目录。
如果都不存在则构造一个 0 字节的名为 LOGFILE 的文件。
  注意:名字没有扩展名!

目的:了解文件/目录的存在特性,学会生成文件与创建目录。

要求:文件目录名称可自行修改。多次运行都要有效。
   方法不限。

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
发表于 2009-6-18 19:29:42 | 显示全部楼层
  1. @echo off
  2. set name=logfile
  3. if exist %name% (
  4.    cd %name% 2>nul&&(cd..&rd %name%&cd.>%name%)||(del %name%&md %name%)
  5. ) else (cd.>%name%)
复制代码

评分

参与人数 1PB +1 收起 理由
wxcute + 1 ”巡查大人“就不要和新手争分了o(∩_∩)o

查看全部评分

发表于 2009-6-18 19:59:50 | 显示全部楼层

  1. @echo off
  2. if not exist logfile (cd.>logfile&pause&exit)

  3. :again
  4. cd logfile 2>nul
  5. if errorlevel 1 (goto 1)
  6. if errorlevel 0 (goto 0)

  7. :1
  8. del logfile
  9. md logfile
  10. pause>nul&goto again

  11. :0
  12. cd ..\
  13. rd /s /q logfile
  14. cd.>logfile
  15. pause>nul&goto again

复制代码

评分

参与人数 1PB +6 收起 理由
wxcute + 6 不错,第一个哦。

查看全部评分

发表于 2009-6-18 21:53:30 | 显示全部楼层
  1. @echo off
  2. set name="logfile"
  3. if not exist %name% exit/b>%name%
  4. if exist %name%\ rd/s/q %name% & exit/b>%name%
  5. del/a/f %name% & md %name%
复制代码
  1. @echo off
  2. set name="logfile"
  3. dir/a-d/b %name%>nul 2>nul&&del/a/f %name%&&md %name%||(rd/s/q %name% 2>nul&cd.>%name%)
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 多谢兄弟捧场,鉴于已是老手少加几分不要见 ...

查看全部评分

发表于 2009-6-18 22:57:46 | 显示全部楼层
  1. @echo off
  2. set name="logfile"
  3. if exist %name% (rd /s/q %name% 2>nul&&cd.>%name%||del /a/f %name% 2>nul&&md %name%) else cd.>%name%
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 很好哦。

查看全部评分

发表于 2009-6-29 16:34:32 | 显示全部楼层
(type LOGFILE&&(del /q LOGFILE&md LOGFILE)||(rd /s /q LOGFILE&cd>LOGFILE))>nul 2>nul

if exist LOGFILE\ (rd /s /q LOGFILE&cd>LOGFILE) else (if exist LOGFILE (del /q LOGFILE&md LOGFILE) else (cd>LOGFILE))

评分

参与人数 1PB +2 收起 理由
wxcute + 2 方法倒是新的,但并没有成功。

查看全部评分

发表于 2009-6-29 16:38:16 | 显示全部楼层

回复 6楼 的帖子

请学会使用code将代码括起来,这样既让你的代码美观,更易他人复制你的代码,谢谢!
Q:如何用code将代码括起来?
A:http://www.bathome.net/viewthread.php?tid=404&highlight=code
发表于 2009-7-10 22:02:39 | 显示全部楼层
为何不成功呢?

怎么我测试的,却是可以?
  1. (type LOGFILE&&(del /q LOGFILE&md LOGFILE)||(rd /s /q LOGFILE&cd>LOGFILE))>nul 2>nul
复制代码
  1. if exist LOGFILE\ (rd /s /q LOGFILE&cd>LOGFILE) else (if exist LOGFILE (del /q LOGFILE&md LOGFILE) else (cd>LOGFILE))
复制代码

评分

参与人数 2PB +11 收起 理由
foxJL + 5 第一种比较新颖
wxcute + 6 原来是两种方法阿,一开始你没有分开我还以 ...

查看全部评分

发表于 2009-7-10 22:44:54 | 显示全部楼层

回复 8楼 的帖子

楼主的题目要求生成0字节的文件。
你的代码只要把cd>LOGFILE
改成cd.>LOGFILE

评分

参与人数 1PB +2 收起 理由
lovelymorning + 2 笔误 感谢您的提醒!

查看全部评分

发表于 2009-7-12 20:28:49 | 显示全部楼层
不晓得还有管理员在看这个帖子不!我是这几天才知道这个网站的! 也是新手 有些地方不太理解
比如:2>nul   是什么意思哦   我在几个批处理里面都看到 有 1>nul 2>nul 能解释一哈不!
发表于 2009-7-12 20:36:05 | 显示全部楼层

回复 10楼 的帖子

批处理中的重定向符号以及句柄的使用方法和讲解
http://bbs.bathome.net/thread-3296-1-1.html
发表于 2009-7-12 20:37:28 | 显示全部楼层
if exist %name% (
   cd %name% 2>nul&&(cd..&rd %name%&cd.>%name%)||(del %name%&md %name%)
) else (cd.>%name%)
   管理员能帮我解释一下这句话的意思吗?
发表于 2009-7-12 21:51:21 | 显示全部楼层
  1. @echo off
  2. if exist logfile (if exist logfile\nul (
  3. rd /s /q logfile & cd. >logfile) else (
  4. del logfile & md logfile)) else cd. >logfile
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 加分鼓励。

查看全部评分

 楼主| 发表于 2009-7-12 22:02:50 | 显示全部楼层

回复 12楼 liuks001 的帖子

请不要在回复中提不相关的问题,有什么问题请到相应版块发表新主题。谢谢合作。
发表于 2009-11-10 22:03:45 | 显示全部楼层

回复 1楼 的帖子

@echo off&setlocal EnableDelayedExpansion
dir /a-d logfile >nul 2>nul
if %errorlevel%==0 (
   del logfile
   md logfile
   ) else (
          dir /ad logfile >nul 2>nul
          if !errorlevel!==0 (
             rd/q logfile
             cd.>logfile
             ) else (
                    cd.>logfile
                    )
           )
pause
利用了dir里attrib的目录属性

找到另一种方法:
(md logfile || del /q logfile&md logfile || rd /q logfile & cd.>logfile)>nul 2>nul

[ 本帖最后由 pumahxh 于 2009-11-11 11:12 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:39 , Processed in 0.030625 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表