[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
看了楼主在卡饭的帖子,很为楼主的执着和分享精神感动,可是想帮忙却不知从何帮起,主要是搞不清楚几个问题:
  1. 1、楼主说的规则是“去除下行无键值的[key_行]”,但是所举的例子并没有很明显的迎合这条规则之处
  2. 2、第一部分的第1行为什么在第二部分中被挪到第7行?感觉根本没有规律啊
  3. 3、\360safe 这个键值为何在第二部分里出现了两次呢?
复制代码
不管是否符合楼主题意,这里先提供一个砍头去尾的常用办法:
  1. @echo off
  2. (for /f "skip=1 delims=" %%a in (1.txt) do (
  3.    if defined str echo;!str:~1!
  4.    endlocal
  5.    set "str=#%%a"
  6.    setlocal enabledelayedexpansion
  7. ))>2.txt
复制代码
如果楼主觉得用颜色、字体来发帖更利于表达,那请在3楼发一贴不用code的,虽然这有违版规,但是对于开发实用批处理项目的爱好者,本人绝对支持,如因此被扣分,算我头上。
仅此一次,下不为例哦

TOP

3# ArdentMan


这种非常特殊的情况下,可以用 %%~pa 来代替 !Str:~,1!,以简化代码、提高效率

TOP

先来一个比较不通用的,借用 3 楼框架:
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. set hh=^
  3. For /F "skip=1 delims=" %%I IN (1.txt) Do (
  4.   If "%%~pI" neq "\" (
  5.     set str=!hh!%%I
  6.   ) else (
  7.     set var=!var!!str!!hh!%%I
  8.     set str=
  9.   )
  10. )
  11. for /f "delims=" %%a in ("!var!") do echo %%a
  12. pause
复制代码

TOP

这个是通用性强的:
  1. @Echo Off
  2. (For /F "skip=1 delims=" %%I IN (1.txt) Do (
  3.   for /f "tokens=1* delims=;" %%a in ("!var!;!str!") do (
  4.     endlocal
  5.     set var=%%a
  6.     set str=%%b
  7.   )
  8.   set var=%%I
  9.   setlocal enabledelayedexpansion
  10.   If "%%~pI" neq "\" (
  11.     set str=!var!
  12.   ) else (
  13.     if defined str echo !str!
  14.     set str=
  15.     echo !var!
  16.   )
  17. ))>2.txt
  18. pause
复制代码

TOP

返回列表