Board logo

标题: [文件操作] [已解决]批处理根据文件夹名字把文件夹下面的所有文件改成文件夹一样的名字 [打印本页]

作者: qwop1209    时间: 2019-4-24 12:01     标题: [已解决]批处理根据文件夹名字把文件夹下面的所有文件改成文件夹一样的名字

本帖最后由 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

求解决方法。。非常感激
作者: Batcher    时间: 2019-4-24 12:18

  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. )
复制代码

作者: qwop1209    时间: 2019-4-24 12:23

回复 2# Batcher


    谢谢大佬。。非常感谢
作者: qwop1209    时间: 2019-4-24 12:31

回复 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个文件
作者: Batcher    时间: 2019-4-24 12:46

回复 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. )
复制代码

作者: qwop1209    时间: 2019-4-24 13:05

回复 5# Batcher


    非常感激。。谢谢大佬。遇到的几个问题都解决了。。太谢谢了
作者: qwop1209    时间: 2019-4-25 23:17     标题: 批处理根据文件夹改名的时候含特殊字符无法改名

本帖最后由 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
)

用这个代码处理含特殊字符的文件夹。。里面的文件就无法改名。例如含・・・ * ♥★号等
忘大佬能解决问题。。再次感谢
作者: qwop1209    时间: 2019-4-25 23:32

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

回复 5# Batcher


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

改后名字就变成 123234了

但是像 123●234
这种文件名的就没法更改
作者: Batcher    时间: 2019-4-26 09:32

回复 8# qwop1209


http://bbs.bathome.net/thread-52651-1-1.html#pid219646
这个方法不行吗?
作者: qwop1209    时间: 2019-4-26 11:29

回复 9# Batcher


    嗯。。哪个没法适用根据文件夹改下面的文件。。加那个代码上去根本就没法识别含特殊字符的文件夹
作者: Batcher    时间: 2019-4-26 12:44

回复 10# qwop1209


    那个代码是可以修改的,你跟他说说需求吧
作者: zaqmlp    时间: 2019-4-26 13:03

  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
复制代码

作者: qwop1209    时间: 2019-4-26 15:29

回复 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
)

这个代码能不能帮忙处理下呢。。也是含特殊字符就不行了。可以拷贝,但是拷贝后文件就损坏了。。变成几个字节的东西了
作者: zaqmlp    时间: 2019-4-26 16:12

回复 13# qwop1209
没赞助没动力呀
作者: qwop1209    时间: 2019-4-26 16:23

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

回复 14# zaqmlp


    已经赞助了。 半个小时前就赞助了  时间是2019.04.26. 15.40
作者: zaqmlp    时间: 2019-4-26 16:49

回复 15# qwop1209
  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 *.jpg^|?{$_ -is [System.IO.FileInfo]});^
  10.         if($files.length -gt 0){^
  11.             write-host ($item.Name+'\'+$files[0].Name+' --^>  folder.jpg');^
  12.             cp -liter ($item.Name+'\'+$files[0].Name) ($item.Name+'\folder.jpg') -force;^
  13.         };^
  14.     };^
  15.     write-host '%info%' -ForegroundColor green;
  16. pause
复制代码

作者: qwop1209    时间: 2019-4-26 17:03

回复 16# zaqmlp


    感谢现在终于可以了




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