返回列表 发帖

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

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

回复 11# s091200


  
@echo off
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
call :1 "%%i"
)
pause
exit
:1
set /p str=<"%~1"
(for /f "useback skip=1 delims=" %%i in ("%~1") do (
set _str=%%i
setlocal enabledelayedexpansion
echo !_str:^&=%str%^&!
endlocal
)) > "%~dpn1_2%~x1"
rem move "%~dpn1_2%~x1" "%~1"
exit /bCOPY
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 8# 77七


    大神帮帮忙子文件夹里的处理不了,能不能帮我写一个把子文件夹里的文件一块修改的批处理 谢谢!

TOP

谢谢大家!问题以解决

TOP

本帖最后由 aloha20200628 于 2025-1-17 12:37 编辑

回复 1# s091200

5楼代码订正如下,存为 test.bat 运行,结果会将当前目录下凡是包含 ‘&’ 字符的 *.txt 文件逐一处理 》第一行被删除,其中有 '&' 字符的位置被置换为 ‘第一行字符串+&’,新文件名被更名为 *.new.txt
@echo off &setlocal
for /f "delims=" %%F in ('dir /b/a-d *.txt') do find "&" "%%F">nul&&(
   set/p "v="<"%%F" &setlocal enabledelayedexpansion
   more +1 "%%F"|sed.exe "s/&/!v!&/">"%%~nF.new%%~xF"
   endlocal)
pause&exit/bCOPY
1

评分人数

TOP

回复 6# s091200

@echo off
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
call :1 "%%i"
)
pause
exit
:1
set /p str=<"%~1"
(for /f "useback skip=1 delims=" %%i in ("%~1") do (
set _str=%%i
setlocal enabledelayedexpansion
echo !_str:^&=%str%^&!
endlocal
)) > "%~n1_2%~x1"
rem move "%~n1_2%~x1" "%~1"
exit /bCOPY
bat小白,请多指教!谢谢!

TOP

回复 6# s091200


    请更新顶楼的需求,写清楚:多个文件同时修改。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# 77七


    非常感谢!还是无法进行多个文件同时修改。

TOP

本帖最后由 aloha20200628 于 2025-1-15 21:11 编辑

回复 3# s091200

给一个用 sed.exe 简化的批处版本
可从本坛第三方直接下载 sed.exe 落地即用(http://bcn.bathome.net/s/tool/index.html?key=sed),与批处脚本和 1.txt 同目录
@echo off &setlocal &set/p v=<1.txt
more +1 1.txt|sed "s/&/%v%&/g">2.txt
type "2.txt"&pause&exit/bCOPY

TOP

回复 3# s091200


  
@echo off
cd /d "%~dp0"
set /p str=<"1.txt"
(for /f "useback skip=1 delims=" %%i in ("1.txt") do (
set _str=%%i
setlocal enabledelayedexpansion
echo !_str:^&=%str%^&!
endlocal
)) > "2.txt"
pauseCOPY
bat小白,请多指教!谢谢!

TOP

本帖最后由 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 移动到 & 字符前

TOP

回复 1# s091200


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

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-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

返回列表