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

[文件操作] [已解决]批处理根据文件夹名字把文件夹下面的所有文件改成文件夹一样的名字

本帖最后由 qwop1209 于 2019-4-24 12:23 编辑

例如现在又 文件夹001   文件夹002  文件003

文件夹001下面  13465.rar  465465.rar   46131.jpg  13465.jpg  4个文件
文件夹002下面  12345.rar  07845.rar   416456.jpg  04563.jpg  798.jpg   5个文件
文件夹003下面  12345.rar  123213.rar   4cxvc.jpg  zcxvcx.jpg   465465.jpg  4456455.jpg   6个文件

实现效果
文件夹001下面文件变成   001.rar  001-副本1.rar       001.jpg     001-副本1.jpg
文件夹002下面文件变成   002.rar  002-副本1.rar       002.jpg     002-副本1.jpg
文件夹003下面文件变成   003.rar  003-副本1.rar       003.jpg      003-副本1.jpg   003-副本2.jpg    003-副本3.jpg

求解决方法。。非常感激
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /ad') do (
  4.     pushd "%%a"
  5.     for %%b in (rar jpg) do (
  6.         set n=0
  7.         for /f "delims=" %%c in ('dir /b /a-d *.%%b') do (
  8.             if not exist "%%a.%%b" (
  9.                 ren "%%c" "%%a.%%b"
  10.             ) else (
  11.                 set /a n+=1
  12.                 ren "%%c" "%%a-副本!n!.%%b"
  13.             )
  14.         )
  15.     )
  16.     popd
  17. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    谢谢大佬。。非常感谢

TOP

回复 2# Batcher


    对了大佬有没有办法

列如 有4个文件夹 文件夹001   文件夹002   文件夹003  文件夹004

文件夹001 内有文件  46546.rar   3132.jpg  2个文件
文件夹002 内有文件  dsdf.rar   123123.jpg  2个文件
文件夹003 内有文件  464654.rar   7987.jpg  2个文件
文件夹004 内有文件  464654.rar   xcvcxv.jpg  2个文件
实现效果 把文件里面的后缀.jpg的文件复制一份并命名为folder.jpg
文件夹001 内有文件  46546.rar   3132.jpg    folder.jpg   3个文件
文件夹002 内有文件  dsdf.rar   123123.jpg   folder.jpg   3个文件
文件夹003 内有文件  464654.rar   7987.jpg   folder.jpg   3个文件
文件夹004 内有文件  464654.rar   xcvcxv.jpg    folder.jpg   3个文件

TOP

回复 4# qwop1209
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /ad') do (
  3.     pushd "%%a"
  4.     for /f "delims=" %%c in ('dir /b /a-d *.jpg') do (
  5.         copy /y "%%c" "folder.jpg"
  6.     )
  7.     popd
  8. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


    非常感激。。谢谢大佬。遇到的几个问题都解决了。。太谢谢了

TOP

批处理根据文件夹改名的时候含特殊字符无法改名

本帖最后由 qwop1209 于 2019-4-25 23:32 编辑

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /ad') do (
    pushd "%%a"
    for %%b in (rar jpg) do (
        set n=0
        for /f "delims=" %%c in ('dir /b /a-d *.%%b') do (
            if not exist "%%a.%%b" (
                ren "%%c" "%%a.%%b"
            )
        )
    )
    popd
)

用这个代码处理含特殊字符的文件夹。。里面的文件就无法改名。例如含・・・ * ♥★号等
忘大佬能解决问题。。再次感谢

TOP

本帖最后由 qwop1209 于 2019-4-26 00:24 编辑

回复 5# Batcher


    你好大佬我用这个代码只要文件夹含特殊字符就无法更改名字。。有没有什么办法能解决呢。。。或者改后的名字特殊字符没了
列如 原名 123・・・234

改后名字就变成 123234了

但是像 123●234
这种文件名的就没法更改

TOP

回复 8# qwop1209


http://bbs.bathome.net/thread-52651-1-1.html#pid219646
这个方法不行吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


    嗯。。哪个没法适用根据文件夹改下面的文件。。加那个代码上去根本就没法识别含特殊字符的文件夹

TOP

回复 10# qwop1209


    那个代码是可以修改的,你跟他说说需求吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. mode con lines=1000
  3. set info=互助互利,支付宝扫码头像,感谢赞助
  4. rem 有问题,可加QQ956535081及时沟通
  5. title %info%
  6. cd /d "%~dp0"
  7. powershell -NoProfile -ExecutionPolicy bypass ^
  8.     foreach($item in (dir^|?{$_ -is [System.IO.DirectoryInfo]})){^
  9.         $files=@(dir -liter $item.Name^|?{$_ -is [System.IO.FileInfo]});^
  10.         for($i=0;$i -lt $files.length;$i++){^
  11.             $newame=$item.Name+$files[$i].Extension;^
  12.             $newpath=$item.Name+'\'+$newame;^
  13.             $n=1;$f=$true;^
  14.             while(test-path -liter $newpath){^
  15.                 if($newame -eq $files[$i].Name){$f=$false;break;};^
  16.                 $newame=$item.Name+'_'+$n.toString()+$files[$i].Extension;^
  17.                 $newpath=$item.Name+'\'+$newame;^
  18.                 $n++;^
  19.             };^
  20.             if($f){^
  21.                 write-host ($item.Name+'\'+$files[$i].Name+' --^> '+$newpath);^
  22.                 mv -liter ($item.Name+'\'+$files[$i].Name) $newpath;^
  23.             };^
  24.         };^
  25.     };^
  26.     write-host '%info%' -ForegroundColor green;
  27. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 12# zaqmlp

谢谢。非常感激。。现在可以了。。不过一个特殊字符代码就复杂了这么多啊

对了大佬。
@echo off
for /f "delims=" %%a in ('dir /b /ad') do (
    pushd "%%a"
    for /f "delims=" %%c in ('dir /b /a-d *.jpg') do (
        copy /y "%%c" "folder.jpg"
    )
    popd
)

这个代码能不能帮忙处理下呢。。也是含特殊字符就不行了。可以拷贝,但是拷贝后文件就损坏了。。变成几个字节的东西了

TOP

回复 13# qwop1209
没赞助没动力呀
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 qwop1209 于 2019-4-26 16:27 编辑

回复 14# zaqmlp


    已经赞助了。 半个小时前就赞助了  时间是2019.04.26. 15.40

TOP

返回列表