[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 sgaizxt001 于 2010-6-19 05:39 发表
为什么不直接
more +2 "!wjm!">"!num!.txt"
del /q "%%a"
可以不用临时文件吧。


是哦,看来我最近脑袋短路的厉害啊~
技术问题请到论坛发帖求助!

TOP

为什么不直接
more +2 "!wjm!">"!num!.txt"
del /q "%%a"
可以不用临时文件吧。

还有一个问题使用>,但是假如有两个以上的文本第一行相同但内容可能不同(比如是一个完整的文章分成了几个文本)时该怎么办呢
努力学习,努力挣分

TOP

13楼同样未考虑到文件名及内容含!号的问题,并且如此使用findstr对效率是个大影响,如果文件数量过多的话。且未考虑到以冒号开头的行
8楼的思路
  1. @echo off
  2. for %%a in (*.txt) do (
  3.    set /p num=<"%%a"
  4.    set "wjm=%%~nxa"
  5.    setlocal enabledelayedexpansion
  6.    more +2 "!wjm!">tem
  7.    move tem "!num!.txt"
  8.    del /q "!wjm!"
  9.    endlocal
  10. )
  11. pause
复制代码

[ 本帖最后由 随风 于 2010-6-19 01:21 编辑 ]
技术问题请到论坛发帖求助!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.txt) do (
  4. for /f "tokens=1,* delims=:" %%a in ('findstr /n .* "%%a"') do (
  5.   if %%a equ 1 set name=%%b
  6.   if %%a geq 3 (echo.%%b >>!name!.txt)
  7. )
  8. del /q /f "%%a"
  9. )
  10. endlocal
  11. pause
复制代码
不知道是不是这样呢,我测试是可以的
努力学习,努力挣分

TOP

原帖由 随风 于 2010-6-18 21:33 发表
給2楼代码提点建议
1、ren 重命名文件最好不要用for直接遍历文件,会有bug
2、既然把setlocal enabledelayedexpansion放在for内部,说明考虑到文件内容和文件名特殊符号的问题,那么就不应该再是echo.%%b而是应该先 ...


不知随风版主能否给个完善点的代码?我对编程这方面不太懂,谢谢了

TOP

回复 2楼 的帖子

給2楼代码提点建议
1、ren 重命名文件最好不要用for直接遍历文件,会有bug
2、既然把setlocal enabledelayedexpansion放在for内部,说明考虑到文件内容和文件名特殊符号的问题,那么就不应该再是echo.%%b而是应该先set num=%%b再echo.!num!,同时 del 当然也不能 %%a 而应先赋值給变量,或者把del语句放在  endlocal 后面。
3、楼主说还是不行,(我也没测试)但估计是()包起for再>$ 所致,建议改成echo.!Num!>>$或者給for再加对()试试。
  ((for /F "usebackq delims=" %%b in ("%%a") do (
      if defined b (echo.%%b) else set "a=%%b"
      set b==
   )))>$
未测试。。。只是好像依稀记得遇到过此问题。
技术问题请到论坛发帖求助!

TOP

我感觉在这两句前加个PAUSE就可以
ren $ "!a!.txt"
del /q /f "%%a"
我写代码的时候遇到这两个命令时要加pause暂停一下,然后才能修改成功。
努力学习,努力挣分

TOP

原帖由 Seter 于 2010-6-18 16:48 发表
我觉得用set/p=


能否给个完整的代码呢?

TOP

我觉得用set/p=<和more+2会好一点
OrzDEF

TOP

又试了一下还是不行,运行后还是全部删除,只生成一个$文件

TOP

忘记加输出了,已在2楼修改。


试了下修改过的,可是运行后把当前文件夹下的所有TXT文件都删除了

TOP

原帖由 zxzl 于 2010-6-18 12:47 发表
你好孤星,我运行了你给的批处理之后,TXT文件的标题可以成功改名,但是TXT文件内容的原第1、2行还在并没有删除?
忘记加输出了,已在2楼修改。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

批处理更改文本文件名为该文件的第一行内容
http://bbs.bathome.net/thread-287-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

你好孤星,我运行了你给的批处理之后,TXT文件的标题可以成功改名,但是TXT文件内容的原第1、2行还在并没有删除?

TOP

  1. @echo off
  2. for %%a in (*.txt) do (
  3.    setlocal enabledelayedexpansion
  4.    (for /F "usebackq delims=" %%b in ("%%a") do (
  5.       if defined b (echo.%%b) else set "a=%%b"
  6.       set b==
  7.    ))>$
  8.    ren $ "!a!.txt"
  9.    del /q /f "%%a"
  10.    Endlocal
  11. )
复制代码

[ 本帖最后由 hanyeguxing 于 2010-6-18 13:26 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表