Board logo

标题: [文本处理] 【出题】批处理更改文本文件名为该文件的第一行内容 [打印本页]

作者: youxi01    时间: 2007-12-5 12:53     标题: 【出题】批处理更改文本文件名为该文件的第一行内容

不知不觉间,写了20多篇 有关感情方面的文章
打算再不更新QQ空间,故将这些文字整理了出来...

这些文章的大致内容如图:
[attach]43[/attach]

要求:
1、根据第一行内容的日期部分,重命名文件;
如:此篇文章文件名为“秋天的蝴蝶”,第一行内容日期部分为:2007年1月1日,然后我们的新文件名应为:秋天的蝴蝶 2007-1-1
2、删除第一行内容;
3、支持批量重命名,最好还支持单个文件拖放更名;
作者: novaa    时间: 2007-12-5 14:02

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p Folder=请输入你文档所在目录或把文档目录拖进此窗口:
  3. pushd %Folder%
  4. for /r %%i in (*.txt) do (
  5. set /p shijian=<%%i
  6. set a=%%i
  7. for /l %%j in (1 1 10) do set a=!a:*\=!
  8. for /f "tokens=1* delims=." %%k in ("!a!") do set a=%%k
  9. for /f "tokens=1,2* delims= " %%m in ("!shijian!") do set shijian=%%n
  10. set shijian=!shijian:年=-!
  11. set shijian=!shijian:月=-!
  12. set shijian=!shijian:日=!
  13. set name=!a!!shijian!
  14. ren "%%i" !name!.txt
  15. )
复制代码

[ 本帖最后由 novaa 于 2007-12-5 14:05 编辑 ]
作者: youxi01    时间: 2007-12-5 14:39

提几点建议:
1、
set a=%%i
for /l %%j in (1 1 10) do set a=!a:*\=!
for /f "tokens=1* delims=." %%k in ("!a!") do set a=%%k

获取文件名没必要用这样的方法,可以用变量名扩展,%%~ni
2、
for /f "tokens=1,2* delims= " %%m in ("!shijian!") do set shijian=%%n
set shijian=!shijian:年=-!
set shijian=!shijian:月=-!
set shijian=!shijian:日=!
set name=!a!!shijian!
ren "%%i" !name!.txt
)

重命没必要放在for循环中,也没必要读取全部文件内容;
3、没有删除 文件的第一行内容;
4、不支持单个文件的拖放;
作者: novaa    时间: 2007-12-5 20:01

那个 for /f 里面的%%~nI我试过了,但是总出错
第二点不太懂
作者: 随风    时间: 2007-12-5 22:18

也来一个。
:
  1. @echo off
  2. ::也可将单个文件拖放到此批处理上,不用先运行本批处理
  3. ::单个文件拖放,支持其它路径的文件。
  4. if not "%~1"==""  goto lis
  5. for %%i in (*.txt) do call :lis "%%i"
  6. pause&exit
  7. :lis
  8. set /p var=<"%~dpnx1"
  9. for /f "tokens=2-4 delims=:年月日" %%a in ("%var%") do (
  10.    set wjm=%~dpn1 %%a-%%b-%%c%~x1
  11. )
  12. for /f "tokens=1,2 delims=:" %%a in ('findstr /n .* "%~1"') do (
  13. if "%%b"=="" (echo\>>"%wjm%") else echo.%%b>>"%wjm%"
  14. )
  15. del/q "%~1"
  16. goto :eof
复制代码

[ 本帖最后由 随风 于 2007-12-5 22:24 编辑 ]
作者: novaa    时间: 2007-12-6 13:15

强!
"%~dpnx1"这个强!
这是乎说明用%进行扩张不一定要在for中!
作者: rivch    时间: 2010-6-22 23:46     标题: 回复 5楼 的帖子

强大的变量扩展!强大的变量扩展!




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