标题: [文件操作] [已解决]批处理怎样在文件夹下批量修改文件名并将文件名写入txt? [打印本页]
作者: w1983912 时间: 2012-6-13 19:06 标题: [已解决]批处理怎样在文件夹下批量修改文件名并将文件名写入txt?
本帖最后由 w1983912 于 2017-11-16 01:04 编辑
文件甲aaa下 只保留含有“ Section 1”的文件(一共似乎是3个空格,请复制) 不包含全删除掉 然后重命名所有文件 删除掉“ Section 1”
按文件名的顺序 保存文件名到aaa.txt 并修改文件名换成对应的次序 aaa.txt格式为 次序 文件名
罗 资源 Section 1.txt
罗 资源 Section 2.txt
a xx啊 Section 1.pdf
a xx啊 Section 2.pdf
a xx啊 Section 3.pdf
a xx啊 Section 4.pdf
1 5啊555 Section 1.mp4
1 5啊555 Section 2.mp4
1 5啊555 Section 3.mp4
保留文件
罗 资源 Section 1.txt 变为 罗 资源.txt 在文件夹里按文件名字排序后 排在第3位 修改文件名变成3.txt
a xx啊 Section 1.pdf 变为 a xx啊.pdf 在文件夹里按文件名字排序后 排在第2位 修改文件名变成2.pdf
1 5啊555 Section 1.mp4 变为 1 5啊555.mp4 在文件夹里按文件名字排序后 排在第1位 修改文件名变成1.mp4
aaa.txt内容为 不带.和后缀 序号后要新加个点 (空1或2个空格都可以 我这空了一个空格)
1. 1 5啊555
2. a xx啊
3. 罗 资源
以上是从1开始的排序和命名
我希望能自己指定,从3或30开始,比如从30开始,得到以下结果
保留文件
罗 资源 Section 1.txt 变为 罗 资源.txt 在文件夹里按文件名字排序后 排在第3位 修改文件名变成32.txt
a xx啊 Section 1.pdf 变为 a xx啊.pdf 在文件夹里按文件名字排序后 排在第2位 修改文件名变成31.pdf
1 5啊555 Section 1.mp4 变为 1 5啊555.mp4 在文件夹里按文件名字排序后 排在第1位 修改文件名变成30.mp4
得到aaa.txt内容为 不带.和后缀 序号后要新加个点 (空1或2个空格都可以 我这空了一个空格)
30. 1 5啊555
31. a xx啊
32. 罗 资源
GBK bat批处理
望大家帮忙,先谢谢各位了
作者: powerbat 时间: 2012-6-13 20:21
不太明白你的意思。- @echo off
- cd aaa
- md ~xxx
- move "* Section 1*" ~xxx >nul
- del /q *
- move ~xxx\* >nul
- rd ~xxx
- ( for /f "delims=|" %%a in ('dir /a-d/b/on "* Section 1*"') do (
- set "old=%%a"
- setlocal enableDelayedExpansion
- set "new=!old: Section 1=!"
- rem ren "!old!" "!new!"
- echo !new!
- endlocal
- ) )>~tmp
- set "n=1"
- set /p n=start:
- set /a skip=n-1
- if %skip% gtr 0 (set "skip=skip=%skip%") else (set skip=)
- ( for /f "%skip% delims=|" %%a in (~tmp) do (
- set "old=%%~na"
- set "ext=%%~xa"
- setlocal enableDelayedExpansion
- rem ren "!old!!ext!" "!n!!ext!"
- echo !n!. !old!
- endlocal
- set /a n+=1
- ) )>aaa.txt
- del ~tmp
- type aaa.txt
- pause
复制代码
作者: weichenxiehou 时间: 2012-6-13 20:29
本帖最后由 weichenxiehou 于 2012-6-13 20:37 编辑
- @echo off&setlocal enabledelayedexpansion
- cls&set/p num=Input start number:
- ::delete non-"section 1" files except myself
- for /f "delims=" %%a in ('dir/b^|findstr /iv /c:"section 1"^|findstr
-
- /v "^%~nx0$"') do del "%%a"
- ::rename left files and generate logfile
- (for /f "delims=" %%a in ('dir/b^|findstr /v "^%~nx0$ record.txt"') do
-
- (
- set "filename=%%a"&set "filename=!filename: Section 1=!"
- ren "%%a" "!num!%%~xa"
- for %%i in ("filename!") do echo,!num!.%%~ni
- set/a num+=1
- ))>record.txt
复制代码
将bat放到该文件夹下运行即可。
作者: apang 时间: 2012-6-13 22:21
本帖最后由 apang 于 2012-6-14 09:52 编辑
- @echo off&setlocal enabledelayedexpansion
- set/p st=输入开始数:
- for /f "delims=" %%a in ('dir /a-d /on /b^|findstr /vbe "%~nx0"') do (
- set "name=%%~na"
- if "!name:Section 1=!"=="!name!" (del "%%a"
- ) else (
- ren "%%a" "!name: Section 1=!%%~xa"
- echo !st!. !name: Section 1=!>>aaa.txt
- set/a st+=1
- )
- )
复制代码
放到aaa文件夹下运行
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |