标题: [文件操作] [已解决]批处理根据文件夹名字把文件夹下面的所有文件改成文件夹一样的名字 [打印本页]
作者: 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
- @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"
- ) else (
- set /a n+=1
- ren "%%c" "%%a-副本!n!.%%b"
- )
- )
- )
- popd
- )
复制代码
作者: 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 - @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
- )
复制代码
作者: 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
- @echo off
- mode con lines=1000
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- powershell -NoProfile -ExecutionPolicy bypass ^
- foreach($item in (dir^|?{$_ -is [System.IO.DirectoryInfo]})){^
- $files=@(dir -liter $item.Name^|?{$_ -is [System.IO.FileInfo]});^
- for($i=0;$i -lt $files.length;$i++){^
- $newame=$item.Name+$files[$i].Extension;^
- $newpath=$item.Name+'\'+$newame;^
- $n=1;$f=$true;^
- while(test-path -liter $newpath){^
- if($newame -eq $files[$i].Name){$f=$false;break;};^
- $newame=$item.Name+'_'+$n.toString()+$files[$i].Extension;^
- $newpath=$item.Name+'\'+$newame;^
- $n++;^
- };^
- if($f){^
- write-host ($item.Name+'\'+$files[$i].Name+' --^> '+$newpath);^
- mv -liter ($item.Name+'\'+$files[$i].Name) $newpath;^
- };^
- };^
- };^
- write-host '%info%' -ForegroundColor green;
- 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 - @echo off
- mode con lines=1000
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- powershell -NoProfile -ExecutionPolicy bypass ^
- foreach($item in (dir^|?{$_ -is [System.IO.DirectoryInfo]})){^
- $files=@(dir -liter $item.Name *.jpg^|?{$_ -is [System.IO.FileInfo]});^
- if($files.length -gt 0){^
- write-host ($item.Name+'\'+$files[0].Name+' --^> folder.jpg');^
- cp -liter ($item.Name+'\'+$files[0].Name) ($item.Name+'\folder.jpg') -force;^
- };^
- };^
- write-host '%info%' -ForegroundColor green;
- pause
复制代码
作者: qwop1209 时间: 2019-4-26 17:03
回复 16# zaqmlp
感谢现在终于可以了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |