Board logo

标题: [文本处理] 【已解决】批处理如何实现提取TXT文件的尾行/最后一行对文件进行改名/重命名 [打印本页]

作者: 屡败屡战    时间: 2017-4-10 09:58     标题: 【已解决】批处理如何实现提取TXT文件的尾行/最后一行对文件进行改名/重命名

求助各位大绅,我有大量文本文件,但是txt文件的标题却是在尾部,我求助能够批量提取TXT文件的尾行并且对文件进行改名。万分感谢!!我在网上找的都是提取首行的,不符合本人要求
作者: ShowCode    时间: 2017-4-10 10:07

把你找的都是提取首行的发出来看看,我帮你改改。
作者: 屡败屡战    时间: 2017-4-10 10:16

谢谢老师!!
代码如下:
@echo off
setlocal enabledelayedexpansion
for %%a in (*.txt) do set "txt=%%a" & call :aa
pause
:aa
for /f "usebackq delims=*" %%b in ("!txt!") do (
  set "a=%%a" & set "b=%%b"
  ren "!a!" "!b!.txt"
  goto :eof
)
作者: ShowCode    时间: 2017-4-10 10:30

回复 3# 屡败屡战


把倒数第三行和倒数第二行拿到for循环外面试试

@echo off
setlocal enabledelayedexpansion
for %%a in (*.txt) do set "txt=%%a" & call :aa
pause
:aa
for /f "usebackq delims=*" %%b in ("!txt!") do (
  set "a=%%a" & set "b=%%b"
)
ren "!a!" "!b!.txt"
goto :eof

作者: 屡败屡战    时间: 2017-4-10 10:42

老师好,我是初学者,有些蒙圈,自已不会改,请帮着写写
作者: 屡败屡战    时间: 2017-4-10 15:21

我自己改了下,不行啊,经测试后,不行啊
作者: ShowCode    时间: 2017-4-10 15:57

回复 6# 屡败屡战


    有什么报错信息?
作者: 屡败屡战    时间: 2017-4-10 16:05

报锗信息:
存在一个重名文件,或是找不到文件。
凊按任意键继续.....
作者: ShowCode    时间: 2017-4-10 23:26

回复 8# 屡败屡战


@echo on
setlocal enabledelayedexpansion
for %%a in (*.txt) do set "txt=%%a" & call :aa
pause
:aa
for /f "usebackq delims=*" %%b in ("!txt!") do (
    set "a=%%a" & set "b=%%b"
)
echo +++ "!a!" "!b!.txt"
if exist "!b!.txt" (
    echo --- 重复
) else (
    ren "!a!" "!b!.txt"
)

goto :eof

执行这个代码,把详细的结果发出来。
作者: /zhqsystem/zhq    时间: 2017-4-11 00:12

本帖最后由 /zhqsystem/zhq 于 2017-4-11 00:17 编辑

回复 3# 屡败屡战
删除ren的行,第一个for中的行结尾加入&&ren "%%~fa" "!b::=!%%~xa"
注:如果存在非法字符提前删除
作者: 屡败屡战    时间: 2017-4-11 07:25

回复 9# ShowCode


    感谢老师,巳亲测通过ok,老师辛苦了,望老师推荐或发一些批处理教程、pdf之类的,懂些批处理,会大大提高工作效率
作者: ShowCode    时间: 2017-4-11 10:27

回复 11# 屡败屡战


http://bbs.bathome.net/thread-75-1-1.html
作者: 屡败屡战    时间: 2017-4-12 09:11

老师,我还想问问,如果延伸一下,我想用倒数第二行、第三行...进行文件重命名,   请问在批处理命令上应该如何修改?
作者: GEVENS    时间: 2018-10-12 14:05

回复 1# 屡败屡战




   请问你后面改好的代码是这样 的吗?
@echo on
setlocal enabledelayedexpansion
for %%a in (*.txt) do set "txt=%%a" & call :aa&&ren "%%~fa" "!b::=!%%~xa"
pause
:aa
for /f "usebackq delims=*" %%b in ("!txt!") do (
    set "a=%%a" & set "b=%%b"
)
echo +++ "!a!" "!b!.txt"
if exist "!b!.txt" (
    echo --- 重复
) else (

)
goto :eof



为什么我改了用不了  是哪里出错了




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