[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
1:为什么不考虑有空格的文件名!
-----因为我下的小说不可能有这种情况!所以我忽略他!
2:我在想出现 unicode 文本只是少数!如果用
  1. for %%a in (2*.txt) do (type "%%a">$
  2.    for /f "delims=《》 tokens=1" %%b in ($) do ( ...
复制代码
那不是每本都处理?那不也算低效率?
3:3的点,看不懂!能不能举个例子
本人已死!不用联系!~
要联系下来联系!~~

TOP

回复 16# jellyhk


    for 无法直接解析 unicode 文本,碰到含有 nul 字符的行是会直接结束解析的。所以为了不错漏,在文件格式不确定的情况下是必须转换的,而此处用的 type 是唯一一个能将 unicode 转为 ansi 的内部命令,只要不写成 for /f ... in ('type') do,其实效率并不低。
    而替换特殊字符其实就是
  1. for %%a in (\ / : ? ^" ^< ^> ^|) do set str=!str:%%a=!
复制代码
但是因为 * 无法直接替换,所以其实最方便的应该是写成(为简化表达,不考虑对感叹号的兼容性):
  1. set "str=***test\测<试>"
  2. set tmp=
  3. for /l %%a in (1 1 10) do (
  4.    for /f tokens^=1*delims^=\/:*?^<^>^|^"  %%b in ("!str!") do (
  5.       set tmp=!tmp!%%a
  6.       set str=%%b
  7.    )
  8.    echo !tmp!
  9. )
复制代码
1

评分人数

    • jellyhk: 辛苦了!我还要慢慢理解!技术 + 1

TOP

本帖最后由 weichenxiehou 于 2011-12-22 07:05 编辑

回复 16# jellyhk
不好意思,以上几次回答会错题意,楼主如果修改关键一句
  1. move %%a 小说提取目录\%%b.txt
复制代码
  1. move %%a 小说提取目录\"%%b.txt"
复制代码
是不是就可以防止大多数特殊符号的影响呢?另外版主大人考虑到了Unicode字符的影响,真可谓思维缜密,个人建议是不是可以用set/p str=<%%a的形式提取到第一行来免除Unicode字符的干扰。既然楼主执意要在原代码基础上修改,当我多嘴吧~
看得多说得多,远比不上写得多。

TOP

18楼!
1:你那代码没用!因为是命名!命名不准有17楼的那些符号!
2:其实一开始我用的代码就是set /p 来提取,但用过几次后发现没现在1楼的代码好!因为如果第一行内容是长内容[很长]!就不会成功!我下的小说!出现特殊字符也许是100本里有1本的几率吧!但是有第一行有长内容的几率更大!所以不用set /p
本人已死!不用联系!~
要联系下来联系!~~

TOP

回复 18# weichenxiehou


一行可以有1千多个字符,文件名不允许这么长吧。

TOP

返回列表