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

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

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

这些文章的大致内容如图:


要求:
1、根据第一行内容的日期部分,重命名文件;
如:此篇文章文件名为“秋天的蝴蝶”,第一行内容日期部分为:2007年1月1日,然后我们的新文件名应为:秋天的蝴蝶 2007-1-1
2、删除第一行内容;
3、支持批量重命名,最好还支持单个文件拖放更名;
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

  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 编辑 ]
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

提几点建议:
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、不支持单个文件的拖放;

TOP

那个 for /f 里面的%%~nI我试过了,但是总出错
第二点不太懂
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

也来一个。
:
  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 编辑 ]
技术问题请到论坛发帖求助!

TOP

强!
"%~dpnx1"这个强!
这是乎说明用%进行扩张不一定要在for中!
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

回复 5楼 的帖子

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

TOP

返回列表