Board logo

标题: [练习]批处理实现文件的伪装与解除伪装 [打印本页]

作者: 523066680    时间: 2010-2-11 09:10     标题: [练习]批处理实现文件的伪装与解除伪装

从前有个硬盘,硬盘里有个文件夹,
文件夹里面有个批处理, 剩下的全是jpg文件,批处理的功能是:
   通过修改格式伪装jpg文件,再次执行的时候能够自行判断并恢复为jpg格式。
   现在假设是伪装成kpg格式(应该是空格式),
   题目就是做一个这样的批处理:
         第一次打开的时候伪装当前目录的jpg文件
         第二次恢复,第三次又伪装....以此类推。

  温馨提示,换一种描述可能使代码更简单,看情况给分。
   (如果你在linux桌面,这个伪装无效,那家伙直接分辨内容的,我"伪装"的图片一览无遗……)
  
ok,继续讲故事:文件夹里有个文件夹,文件夹里有个文件夹……

[ 本帖最后由 523066680 于 2010-2-11 09:18 编辑 ]
作者: Seter    时间: 2010-2-11 09:44

换一种描述?j与k的互换?
作者: 523066680    时间: 2010-2-11 10:03

反正有兴趣的同学先做做看咯~

我顶! 继续等。

[ 本帖最后由 523066680 于 2010-2-11 12:21 编辑 ]
作者: Seter    时间: 2010-2-11 12:40

我等等再发吧~Hoho~
作者: yhp1996    时间: 2010-2-11 14:57     标题: 很简单啊

@echo off
dir *.jpg&if /i %errorlevel%==1 exit
ren *.jpg *.kpg&exit
作者: batman    时间: 2010-2-12 01:20

初始时为jpg.bat
  1. @echo off
  2. if "%~n0" equ "jpg" (
  3.    ren *.jpg *.kpg&ren %0 kpg.bat
  4.    ) else (
  5.    ren *.kpg *.jpg&ren %0 jpg.bat
  6. )
复制代码

作者: hfg1977    时间: 2010-2-12 05:05

  1. @echo off
  2. ren "*.jpg" "*.KJP" &&goto end
  3. ren "*.KJP" "*.jpg" &&goto end
  4. :end
  5. pause
复制代码
  1. @echo off
  2. ren "*.jpg" "*.KJP" &&exit
  3. ren "*.KJP" "*.jpg" &&exit
复制代码
  1. @echo off
  2. ren "*.jpg" "*.KJP" ||ren "*.KJP" "*.jpg"
复制代码

[ 本帖最后由 hfg1977 于 2010-2-12 05:12 编辑 ]
作者: Seter    时间: 2010-2-12 09:06

我想到的是楼上的第三种方法~前两种多了一行 = = 哈哈
不过LS有错误哦
  1. @echo off
  2. ren "*.jpg" "*.KPG" ||ren "*.KPG" "*.jpg"
复制代码

作者: batman    时间: 2010-2-12 09:43

个人建议不用管道命令。
作者: 523066680    时间: 2010-2-12 10:01

原帖由 batman 于 2010-2-12 09:43 发表
个人建议不用管道命令。


-----------------------为什么--------------
作者: hfg1977    时间: 2010-2-18 12:40

原帖由 batman 于 2010-2-12 09:43 发表
个人建议不用管道命令。


"||"是逻辑判断标记 不是管道.
"|"这个才是管道.

RE:楼下
&&
① 连接两个命令,当&&前的命令成功时,才执行&&后的命令。

||
① 连接两个命令,当||前的命令失败时,才执行||后的命令。

|
① 管道符,就是将上一个命令的输出,作为下一个命令的输入."dir /a/b |more"就可以逐屏的显示dir命令所输出的信息。
② 在set/a中的二元运算符,表示按位或。
③ 在帮助文档中表示其前后两个开关、选项或参数是二选一的。

[ 本帖最后由 hfg1977 于 2010-2-18 15:47 编辑 ]
作者: PakTC    时间: 2010-2-18 14:41     标题: 回复 11楼 的帖子

因为两个符号很相似 我看到batman说是管道的时候也没想出来
简洁答案中给出的|| 根本不是管道“|" 而是 "或"  。

[ 本帖最后由 PakTC 于 2010-2-18 14:43 编辑 ]
作者: pumahxh    时间: 2010-3-23 23:25

  1. (ren *.jpg*.kpg ||  ren *.kpg *.jpg) >nul 2>nul
复制代码
好久没来了,退步了,前面在打基础,现在再不加深又要重新学了。
作者: pumahxh    时间: 2010-3-23 23:30

没想到和楼主想到一块去了,不过,我应该象你们一样加上界定符""就更好了。
作者: pumahxh    时间: 2010-3-23 23:33     标题: 回复 6楼 的帖子

同样是完成任务, batman就不一样,连bat也跟着变,漂亮!
作者: FOR    时间: 2010-3-24 11:17

  1. if exist *.jpg (ren "*.jpg" "*.kpg") else ren "*.kpg" "*.jpg"
复制代码

作者: Hello123World    时间: 2011-8-3 15:48

本帖最后由 Hello123World 于 2011-8-3 16:12 编辑

相对于各位批友的各种长见识的解答(ren 原来也是可以用通配符的),我觉得楼主出这道题的价值更大。
我给一个通用性较强实用性较大的批处理。——经测试bat本身也被转成了rar,对我来说可算是意外之喜:bat都给加密了,呵呵。
  1. ::将当前文件夹中所有的文件(包括子文件夹中的文件)转成rar格式(包括bat文件本身),再次转回原格式,需要将bat文件手动改回.bat格式,运行即可。
  2. @echo off
  3. if not exist hello1.txt (goto 1) else (Goto 2)
  4. :1
  5. For /r %%i in (*.*) do (echo %%~nxi>>hello1.txt
  6.         Ren "%%i" "%%~ni.rar")
  7. Exit
  8. :2
  9. For /f "delims=" %%i in (hello1.txt) do Ren "%%~ni.rar" "%%i"
  10. Del hello1.txt
  11. Pause>nul&Exit
复制代码

作者: scarcr    时间: 2011-8-4 12:44

回复 1# 523066680

以下测试有效
  1. if exist *.jpg (ren *.jpg *.loli) else (ren *.loli *.jpg)
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2