找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14357|回复: 11

[文本处理] 把文本第一行移动到&字符前面的批处理怎么写?

[复制链接]
发表于 2025-1-14 22:05:34 | 显示全部楼层 |阅读模式
把文本第一行移动到&字符前面的批处理怎么写谢谢
发表于 2025-1-15 08:36:06 | 显示全部楼层
回复 1# s091200


请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,请用使用网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
 楼主| 发表于 2025-1-15 19:33:13 | 显示全部楼层
本帖最后由 s091200 于 2025-1-15 19:35 编辑

回复 2# Batcher


    处理前的样子
L14010
M: Q420B
LP: 4935
SA140 SB140 TA10 TB10
DA25.5 X40 TR45
DA25.5 X4895 TR45
MKFF-AC-JCK29201C & X420
M30
END
处理后的样子
M: Q420B
LP: 4935
SA140 SB140 TA10 TB10
DA25.5 X40 TR45
DA25.5 X4895 TR45
MKFF-AC-JCK29201C L14010& X420
M30
END
把第一行 L14010 移动到 & 字符前
发表于 2025-1-15 19:50:19 | 显示全部楼层
回复 3# s091200


  
  1. @echo off
  2. cd /d "%~dp0"
  3. set /p str=<"1.txt"
  4. (for /f "useback skip=1 delims=" %%i in ("1.txt") do (
  5.         set _str=%%i
  6.         setlocal enabledelayedexpansion
  7.         echo !_str:^&=%str%^&!
  8.         endlocal
  9. )) > "2.txt"
  10. pause
复制代码
发表于 2025-1-15 20:52:40 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-1-15 21:11 编辑

回复 3# s091200

给一个用 sed.exe 简化的批处版本
可从本坛第三方直接下载 sed.exe 落地即用(http://bcn.bathome.net/s/tool/index.html?key=sed),与批处脚本和 1.txt 同目录

  1. @echo off &setlocal &set/p v=<1.txt
  2. more +1 1.txt|sed "s/&/%v%&/g">2.txt
  3. type "2.txt"&pause&exit/b
复制代码
 楼主| 发表于 2025-1-16 21:11:43 | 显示全部楼层
回复 4# 77七


    非常感谢!还是无法进行多个文件同时修改。
发表于 2025-1-17 08:53:12 | 显示全部楼层
回复 6# s091200


    请更新顶楼的需求,写清楚:多个文件同时修改。
发表于 2025-1-17 11:14:32 | 显示全部楼层
回复 6# s091200

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.         call :1 "%%i"
  5. )
  6. pause
  7. exit

  8.         :1
  9.         set /p str=<"%~1"
  10.         (for /f "useback skip=1 delims=" %%i in ("%~1") do (
  11.                 set _str=%%i
  12.                 setlocal enabledelayedexpansion
  13.                 echo !_str:^&=%str%^&!
  14.                 endlocal
  15.         )) > "%~n1_2%~x1"
  16.         rem move "%~n1_2%~x1" "%~1"
  17.         exit /b
复制代码
发表于 2025-1-17 12:16:29 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-1-17 12:37 编辑

回复 1# s091200

5楼代码订正如下,存为 test.bat 运行,结果会将当前目录下凡是包含 ‘&’ 字符的 *.txt 文件逐一处理 》第一行被删除,其中有 '&' 字符的位置被置换为 ‘第一行字符串+&’,新文件名被更名为 *.new.txt

  1. @echo off &setlocal
  2. for /f "delims=" %%F in ('dir /b/a-d *.txt') do find "&" "%%F">nul&&(
  3.    set/p "v="<"%%F" &setlocal enabledelayedexpansion
  4.    more +1 "%%F"|sed.exe "s/&/!v!&/">"%%~nF.new%%~xF"
  5.    endlocal)
  6. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
s091200 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-1-17 17:35:58 | 显示全部楼层
谢谢大家!问题以解决
 楼主| 发表于 2025-1-22 20:42:08 | 显示全部楼层
回复 8# 77七


    大神帮帮忙子文件夹里的处理不了,能不能帮我写一个把子文件夹里的文件一块修改的批处理 谢谢!
发表于 2025-1-22 21:33:51 | 显示全部楼层
回复 11# s091200


  
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
  4.         call :1 "%%i"
  5. )
  6. pause
  7. exit

  8.         :1
  9.         set /p str=<"%~1"
  10.         (for /f "useback skip=1 delims=" %%i in ("%~1") do (
  11.                 set _str=%%i
  12.                 setlocal enabledelayedexpansion
  13.                 echo !_str:^&=%str%^&!
  14.                 endlocal
  15.         )) > "%~dpn1_2%~x1"
  16.         rem move "%~dpn1_2%~x1" "%~1"
  17.         exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
s091200 + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 12:45 , Processed in 0.013293 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表