中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 23:10
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何在批量文件的里面第一个字符处加入指定内容? 查看 1,043 回复 13
楼 主 如何在批量文件的里面第一个字符处加入指定内容? 发表于 2008-05-30 21:34 ·  中国 广东 深圳 电信
初级用户
积分 54
发帖 24
注册 2008-05-30 20:17
18年会员
UID 120132
性别 男
状态 离线
各位大哥小弟有一事相求!
如何在批量文件的里面第一个字符处添加入指字内容?
请指教.多谢!
在线等 !

[ Last edited by zhengruijian on 2008-5-31 at 08:56 AM ]
2 发表于 2008-05-30 22:01 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
===>search...
批处理之家新域名:www.bathome.net
3 发表于 2008-05-30 22:13 ·  中国 广东 深圳 电信
初级用户
积分 54
发帖 24
注册 2008-05-30 20:17
18年会员
UID 120132
性别 男
状态 离线
小弟刚来.搜了一下没搜到哦??
请大侠帮帮忙啊!
多谢谢.!!
4 发表于 2008-05-30 22:29 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by zhengruijian at 2008-5-30 22:13:
小弟刚来.搜了一下没搜到哦??
请大侠帮帮忙啊!
多谢谢.!!

肯定没有搜索,要是真搜索了,可以找到不下20个帖子,都可以解决你的问题。
5 发表于 2008-05-31 07:06 ·  中国 广东 深圳 电信
初级用户
积分 54
发帖 24
注册 2008-05-30 20:17
18年会员
UID 120132
性别 男
状态 离线
说两句.
搜索命令竟然要加入" OR "!如果搜索名过长就搜不到,而已OR还不能小写,一定要大写的.是不是BUG啊?
小弟刚刚入行哦.
我搞了个通宵,搞了 下面一个程序,现在不敢运行啊.怕我我东东全搞坏了.
大侠看看行不行啊?
我搞的下面的这个程序用处是把"C:\Documents and Settings\Administrator\桌面\222" 里面的所有 *.TXT文件的第一行前面加上"[00:00.00]".

@echo off&setlocal enabledelayedexpansion
for /r C:\Documents and Settings\Administrator\桌面\222 "delims=" %%i in ('type *.txt') do (
set /a n+=1
if !n! equ 1 (
echo %%i>*.txt
) else (
if !n! equ 1 (
echo [00:00.00]>>*.txt&echo %%i>>*.txt
) else (
echo %%i>>*.txt
)
)
)

echo 全部ok!

大侠看看行不行啊?
6 发表于 2008-05-31 07:34 ·  中国 广东 深圳 电信
初级用户
积分 54
发帖 24
注册 2008-05-30 20:17
18年会员
UID 120132
性别 男
状态 离线
没有人来哦...555
7 发表于 2008-05-31 09:34 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
肯定不行了。

1、带有空格的路径没有加引号,会报错;
2、for /r 的 in ()里面只能是类型说明符,而不是一个命令;
3、“> *.txt” 这样是写不进文件的。
8 真佩服楼主的精神: 发表于 2008-05-31 11:29 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
&&一个通霄!楼主精神可嘉,为了楼主这种精神,我再来解答一次吧:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /s /a-d /b c:\docume~1\admini~1\桌面\222\*.txt') do (
for /f "delims=" %%i in ('type "%%a"') do (
if not defined flag (
echo %%i>"%%a"&set "flag=A"
) else (
echo %%i>>"%%a"
)
)
set "flag="
)
echo 全部ok!
pause>nul

ps:看情形楼主是要在文件里加入时间吧,那就把改成%time%就可以了。

[ Last edited by zw19750516 on 2008-5-31 at 12:15 PM ]
批处理之家新域名:www.bathome.net
9 如有子文件夹并不想处理子文件中的文件: 发表于 2008-05-31 12:24 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion
cd\&cd /d c:\docume~1\admini~1\桌面\222
for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
for /f "delims=" %%i in ('type "%%a"') do (
if not defined flag (
echo %%i>"%%a"&set "flag=A"
) else (
echo %%i>>"%%a"
)
)
set "flag="
)
echo 全部ok!
pause>nul



@echo off&setlocal enabledelayedexpansion
for %%a in (c:\docume~1\admini~1\桌面\222\*.txt) do (
for /f "delims=" %%i in ('type "%%a"') do (
if not defined flag (
echo %%i>"%%a"&set "flag=A"
) else (
echo %%i>>"%%a"
)
)
set "flag="
)
echo 全部ok!
pause>nul
批处理之家新域名:www.bathome.net
10 发表于 2008-05-31 12:36 ·  中国 重庆 合川区 电信
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
我也来个用type的:
@echo off
for /r "C:\Documents and Settings\Administrator\桌面\222" %%i in (*.txt) do (
set "name=%%~nxi"
echo >tmp.txt&type "%%i">>tmp.txt
del "%%i"&call rename tmp.txt "%%name%%"
)
11 发表于 2008-05-31 18:18 ·  中国 广东 深圳 电信
初级用户
积分 54
发帖 24
注册 2008-05-30 20:17
18年会员
UID 120132
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-31 11:29:
&&一个通霄!楼主精神可嘉,为了楼主这种精神,我再来解答一次吧:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /s ...


如果想在最后一行前面加入,这个程序怎么改啊??
12 发表于 2008-05-31 18:21 ·  中国 广东 深圳 电信
初级用户
积分 54
发帖 24
注册 2008-05-30 20:17
18年会员
UID 120132
性别 男
状态 离线
另外问一下.文本中每个行/每个字符的位置,都有什么表示方法啊?
13 发表于 2008-06-01 00:30 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by zhengruijian at 2008-5-31 18:18:


如果想在最后一行前面加入,这个程序怎么改啊??


@echo off&setlocal enabledelayedexpansion
for %%a in (c:\docume~1\admini~1\桌面\222\*.txt) do (
for /f "delims=" %%i in ('type "%%a"') do (
set /a n+=1&set _!n!=%%i
)
for %%i in (1,1,!n!) do (
if %%i equ 1 do (
echo !_%%i!>"%%a"
) else (
if %%i equ !n! (
echo !_%%i!>>"%%a"
) else (
echo !_%%i!>>"%%a"
)
)
)
set n=0
)
echo 全部ok!
pause>nul
批处理之家新域名:www.bathome.net
14 发表于 2008-06-01 00:54 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by zhengruijian at 2008-5-31 18:21:
另外问一下.文本中每个行/每个字符的位置,都有什么表示方法啊?

运行以下代码你就会明白了:

@echo off&setlocal enabledelayedexpansion
if exist a.txt del /q a.txt
for /l %%i in (1,1,50) do echo %%i.www.cn-dos.net.zw19750516>>a.txt
for /f "delims=" %%i in (a.txt) do (
set /a n+=1&set _!n!=%%i&set str=%%i&call :lp
)
set /p select1=请输入你想显示第几行(1-%n%):
cls&echo 你要显示的行为:!_%select1%!
pause
cls&set /p select2=请输入你想显示第几行第几个字符(格式为2.12):
for /f "tokens=1,2 delims=." %%i in ("%select2%") do set a=%%i&set b=%%j
cls&echo 你要显示的字符为:!_%a%_%b%!
pause&del /q a.txt
goto :eof
:lp
set /a m+=1
set _%n%_%m%=%str:~,1%&set str=%str:~1%
if defined str goto lp
set m=0


[ Last edited by zw19750516 on 2008-6-1 at 01:09 AM ]
批处理之家新域名:www.bathome.net
论坛跳转: