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

[文件操作] 求助完善/改进批量修改文件名的批处理代码

本帖最后由 pcl_test 于 2016-7-14 12:24 编辑

对于我这样一个菜鸟急需要一位大神的指点,在网上我搜索到很多代码,可是光知道代码是没有用的
我想知道为什么,要怎么做。对于刚刚开始学习计算机的我,希望各路大神能指导。
我没有什么可以回报的,只能在论坛里没事顶顶您的帖子
盼望大神到来



:main

:: “::”是注释的意思 为了让和我一样菜的人看懂,我就把我这两天掌握的 都奉献出来。一个冒号“:”代表这里做了一个标记。“:main”是说 这里我做了一个叫main的标记,标记要和 goto一起使用。以后如果代码中出现了“goto main”就是程序执行又跳到这一行了。

@echo off


::上面这行代码可厉害了。就是不让cmd显示当前路径那些乱遭的东西,保持卫生的作用。“echo”是显示的意思,也可以用这个命令来显示当前程序中变量的值。比如我要显示变量a的值就可以在给a赋值后输入“echo %a%”至于中间的百分号,起到强调我要显示的是变量a, 而不是字符a。

cls

::清屏的意思


echo 1.格式转换
echo 2.文件名称替换
echo 3.给文件名添加文字
echo 4.退出

::如果你想在屏幕上显示出什么来,echo也是个好帮手。上面这段代码放到播放出来 就只剩下1.……2.……


set c =
set /p c= 选择


::我理解set的意思就是,安放的意思。先给程序里安放一个变量叫做“c” 然后接着用 “set /p c=选择” 这个句子等待键盘输入值。如果你输入个“骂了隔壁的”然后回车,那么c 这个变量就等于“骂了隔壁的”


if "%c%"=="1" goto gszh
if "%c%"=="2" goto mcth
if "%c%"=="3" goto tjwz
if "%c%"=="4" goto tc


::这里可以加个exit 但是好像没有什么用,上面四行代码,都是判断c的值,如果你刚才真的输入了 “骂了隔壁的” 那么程序会执行 c= 1 的命令 原因我也不知道。可能是因为我没加exit.


:gszh

::这个地方有没有发现是格式转换的首字母呢?

cls
set a =
set /p a= 输入希望替换的格式
set b =
set /p b= 输入希望变成的格式


::如果上面这几行代码没看懂请重头再看。


ren *.%a% *.%b%

:: ren 全称叫 rename 改名的意思 “*”可以代替很多个字符。也就是说 如果你想找“[泷泽萝拉第二部高清种子][ABS-141 僕を誘惑する白い妖精 滝澤ローラ.rmvb”你可以这样写“[泷泽萝拉*.rmvb”后面的乱七八糟的东西就都给省略了。如果你电脑里的这个盘里只有这么一部rmvb 那你就可以写成“*.rmvb”。ren的这个命令非常简单,前面是原来的名字 后面是想改成的名字。也就是说批量改名,无论如何都要用到ren。

pause

:: 这个是暂停,按任意键继续。

goto main




:tc

::这里可以加个exit 但是好像没有什么用,可加可不加我非常潇洒的给省略了。



::跪求大神将剩余两项功能补全,最好能写出注释。我真的很菜很菜。

有人帮助真是太幸福了!向BAT-VBS致敬!

TOP

回复 6# ziyooudeyu


    因为要进行字符替换的只是文件名本身,而不是文件的完整路径。
1

评分人数

    • ziyooudeyu: 的确是个技术一流的热心人技术 + 1

TOP

回复 7# Batcher


    原来可以不点子版块啊

TOP

回复 6# ziyooudeyu


    你试试代码求助&讨论这个版块
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 ziyooudeyu 于 2012-12-1 22:26 编辑

回复 5# BAT-VBS 谢谢大神指点 我仅是一个爱好者,对于有偿我很惭愧,真的是无言以对。可是我在别的版块发表不了求助。您是第一个理会我的人,对您致敬。和我想的不一样 为什么要加个~nxi 呢

TOP

回复 2# ziyooudeyu
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set c=
  4. set a=
  5. set b=
  6. set /p "c=请输入一个路径:"
  7. set /p "a= 输入想去掉的字符:"
  8. set /p "b= 输入想替换的内容:"
  9. for /r %c% %%i in (*) do (
  10.     set "d=%%~nxi"
  11.     set d=!d:%a%=%b%!
  12.     if "%%~nxi" neq "!d!" (
  13.         ren "%%i" "!d!"
  14.     )
  15. )
复制代码

TOP

回复 3# ziyooudeyu


    你是怎样理解“有偿求助”这几个字的?

TOP

这个论坛好冷清

TOP

set /p c=请输入一个路径:

set /p a= 输入想去掉的字符

set /p b= 输入想替换的内容

for /r %c% %%i in (*) do (
set d=%%i


set d=!d:!a=!b!

:: 卡到这里了 不知道怎么调用a才能达到我想要的效果



if %%i neq !file! (ren "%%i" "!d!")
)  
pause


期待高手帮忙看下

TOP

返回列表