中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 16:46
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于判断文件名的批处理!急!!!在线等!!! 查看 2,204 回复 29
楼 主 关于判断文件名的批处理!急!!!在线等!!! 发表于 2009-04-11 06:51 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
1、我需要这样一个批处理:
读取指定目录里的文件名,然后判断如果有相应的文件名则goto到下一步,否则终止。

比如:
c:\下有 *****123.txt 文件,就需要判断是否存在一个文件名包含123的,如果有则继续,否则退出。


2、还有这样一个批处理:
在一个文本文档中包含路径,但需要变成运行批处理后,将这个路径设定为%systemroot%之类,如文本文档中有:


%123%\windows\system32\
就需要运行批处理后将这个文档中的%123%变成系统的系统根目录:c:\windows\system32\





希望大家帮忙,谢谢了!!!!

[ Last edited by crysis on 2009-4-11 at 06:57 ]
2 发表于 2009-04-11 07:02 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
dir /b c:\*.txt|findstr /ric:".*123\.txt"&&goto :ne

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
3 发表于 2009-04-11 07:04 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
谢谢你了,麻烦你第二个。
4 发表于 2009-04-11 07:05 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
http://baiy.cn/utils/fr/index.htm

查换替换 推荐FR
FR -R:"%123%" -t:"c:\" 123.txt

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2009-04-11 07:09 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
if not exist c:\*123.txt goto:eof
6 发表于 2009-04-11 07:10 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@echo off&setlocal ENABLEDELAYEDEXPANSION
for /r d:\dd %%a in (*.*) do (set name=%%~na&if not "!name:123=!"=="!name! goto :continu)
goto :eof
:continu
...

第一个问题是不是这样,

第二个不明白。。。
精简
=> 个人网志
7 发表于 2009-04-11 07:18 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
if not exist c:\*123*.txt goto:eof
这样的话就可以判断文件中部的文字了,谢谢!
8 发表于 2009-04-11 07:18 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
Originally posted by netbenton at 2009-4-11 07:10:
@echo off&setlocal ENABLEDELAYEDEXPANSION
for /r d:\dd %%a in (*.*) do (set name=%%~na&if not "!name:123=!"=="!name! goto :continu)
goto :eof
:continu
...

第 ...

这个真复杂!
9 发表于 2009-04-11 07:21 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
能把第二个文本文档内容贴出来吗?
10 发表于 2009-04-11 07:31 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
不能贴出来吗~~~
不知下面的命令是否符合你的要求

for /f "tokens=1* delims=\" %%i in (1.txt) do echo "c:\%%~j"
11 发表于 2009-04-11 07:35 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
可以了,谢谢大家!
12 发表于 2009-04-11 07:52 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
文本的全部内容:
[boot loader]
timeout=0
default=%123%\grldr.mbr
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
%123%\grldr.mbr="TEST"

就是想运行批处理后让 %123% 变成Windows所在的盘符比如:c:\ d:\等等
13 发表于 2009-04-11 07:54 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
set 123=c:\
for /f "delims=" %%a in (aa.txt) do call echo.%%a


呵呵,这个不行,变量不可以是数字开头,不好意思,发错了。

[ Last edited by netbenton on 2009-4-11 at 06:04 ]
精简
=> 个人网志
14 发表于 2009-04-11 07:57 ·  中国 贵州 遵义 电信
初级用户
积分 20
发帖 20
注册 2009-04-10 03:30
17年会员
UID 142557
性别 男
状态 离线
盘符也需要变量,如果系统在D盘,则自动判断为D盘
15 发表于 2009-04-11 08:19 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@echo off
set 123=%systemroot%
for /f "delims=" %%a in (b.txt) do set a=%%a& call :sub
Pause
goto :eof
:sub
setlocal ENABLEDELAYEDEXPANSION
set a=!a:%%=###!
endlocal&set a=%a%
set a=%a:###=!%
setlocal ENABLEDELAYEDEXPANSION
echo.%a%
endlocal
goto :eof

这次可以了
精简
=> 个人网志
论坛跳转: