![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 01:15 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 关于去掉文件扩展名的问题? |
| 可打印版本 999 / 12 |
| 第1楼 zzhh612 | 发表于 2007-04-08 06:18 |
| 中级用户 发帖 103 积分 278 | |
|
关于去掉文件扩展名的问题? 批处理中有这一句:copy %1 %~n1
这可以把文件的扩展名去掉吗,我试了一下好象不行,那么怎样才能在批处理中用命令参数的方式去掉文件的扩展名呢? |
|
| 第2楼 slore | 发表于 2007-04-08 06:47 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
ren %1 "%~n1"
|
|
| 第3楼 zzhh612 | 发表于 2007-04-08 07:32 |
| 中级用户 发帖 103 积分 278 | |
|
ren %1 %~n1
for %%f in (%1) do (copy 1.txt + %%f + 3.txt %%f.htm) 我本想是在%1所代表的文本文件前后各加上一段文字,再将合并后的文件更名为.thm 可是每次生成的文件都成了*.txt.htm ,不知在调用%1的过程中如何把.txt去掉, 当把for中的%1替换为%~1或是把最后的%%f 修改为%~nf,都不能正常执行. 也就是说如何让for 调用的是去掉扩展名后的文件.当然如果分成两步先去扩展名再调用批处理合并文件,这容易完成,可我想在一个批处理中完成? [ Last edited by zzhh612 on 2007-4-8 at 07:41 AM ] |
|
| 第4楼 kcdsw | 发表于 2007-04-08 07:53 |
| 中级用户 发帖 179 积分 404 | |
|
先看看效果 |
|
| 第5楼 zzhh612 | 发表于 2007-04-08 08:30 |
| 中级用户 发帖 103 积分 278 | |
|
试验了一下楼上的代码,结果照旧,原文本文件的扩展名去掉了,但生成的文件为*.txt.htm
|
|
| 第6楼 bjsh | 发表于 2007-04-08 10:35 |
| 银牌会员 发帖 621 积分 2,000 | |
|
比如你把18.txt 去掉扩展名可以
ren 18.txt *. 再比如你c盘里有很多tiff文件你想去掉他们的扩展名 ren *.tiff *. 即可把所有的tiff文件去掉扩展名 |
|
| 第7楼 bjsh | 发表于 2007-04-08 10:48 |
| 银牌会员 发帖 621 积分 2,000 | |
Originally posted by zzhh612 at 2007-4-7 06:32 PM: 你这样写的代码 生成不止一个文件吧; 恐怕你的这个%1文件内容有多少就能生成多少个htm文件吧; 先暂且不讨论是否有.txt.htm 恐怕不是你想要的结果吧; 补充:是我自己理解错了; 把for 和for /f 没分清 for /f %%f in (%1) do (copy 1.txt + %%f + 3.txt %%f.htm) 生成不止一份文件;源代码确实是生成一份文件的 [ Last edited by bjsh on 2007-4-8 at 01:21 PM ] |
|
| 第8楼 zzhh612 | 发表于 2007-04-08 13:38 |
| 中级用户 发帖 103 积分 278 | |
|
当然是在命令行下或是在另一个批处理中调用用这个批处理.一次调用,%1只代表一个文件,例如:c:\ test.bat test.txt 或是在另一个批处理中调用:
call test.bat test.txt 一次调用中%1只代表test.txt文件,所以也只生成一个test.txt.htm文件,只是我现在想要它生成的是test.htm文件. |
|
| 第9楼 lxmxn | 发表于 2007-04-08 14:41 |
| 版主 发帖 4,938 积分 11,386 | |
|
copy /y %1 "%~dpn1" |
|
| 第10楼 bjsh | 发表于 2007-04-08 21:07 |
| 银牌会员 发帖 621 积分 2,000 | |
|
这个可以的
|
|
| 第11楼 zzhh612 | 发表于 2007-04-09 00:31 |
| 中级用户 发帖 103 积分 278 | |
|
bjsh
的代码,是我自己在用的过程中写错了一点.本身是能正常运行的,原来此贴作废.特此向BJSH致歉! [ Last edited by zzhh612 on 2007-4-9 at 01:51 AM ] |
|
| 第12楼 zzhh612 | 发表于 2007-04-09 00:58 |
| 中级用户 发帖 103 积分 278 | |
|
按lxmxn的意见建立的test.bat:
@echo off copy /y %1 "%~dpn1" for %%f in (%~dpn1) do (copy 1.txt + %%f + 3.txt %%f.htm) del %~dpn1 这个代码在命令行调用和通过另一个批处理调用均能得到要求的结果,真是不错. |
|
| 第13楼 zzhh612 | 发表于 2007-04-09 01:20 |
| 中级用户 发帖 103 积分 278 | |
|
不过我在试用楼上的代码过程式中发现了一个奇怪的现象,
就是当我无意中将test.txt拖向test.bat是,在这种运行方式下,却生成了如下的test.html的文件: <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> <HTML><HEAD><TITLE>电脑网络技术日记</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="/css/style2.css" type=text/css rel=stylesheet> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> </HEAD> <BODY background="./img/bg03.gif"><pre> <!-- 插入内容开始 --> <HTML><HEAD><TITLE>电脑网络技术日记</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="/css/style2.css" type=text/css rel=stylesheet> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> </HEAD> <BODY background="./img/bg03.gif"><pre> <!-- 插入内容开始 --> <HTML><HEAD><TITLE>电脑网络技术日记</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="/css/style2.css" type=text/css rel=stylesheet> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> </HEAD> <BODY background="./img/bg03.gif"><pre> <!-- 插入内容开始 --> <HTML><HEAD><TITLE>电脑网络技术日记</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="/css/style2.css" type=text/css rel=stylesheet> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> </HEAD> <BODY background="./img/bg03.gif"><pre> <!-- 插入内容开始 --> 888888888888888888888888888888888888 99999999999正文999999999999999999 111111111111111111111111111111111111 <!-- 插入内容结束 --> </pre></BODY></HTML> <!-- 插入内容结束 --> </pre></BODY></HTML> <!-- 插入内容结束 --> </pre></BODY></HTML> <!-- 插入内容结束 --> </pre></BODY></HTML> --------------------------------------------------------------------------------------------------- 而本身我这时的1.txt内容是"文本前插入",3.txt的内容是:"最后插入文本",除test.txt正文的内容正确外,怎么其它全变了,好象它所合并在test.txt两端的内容是我昨天试用这个批处理所用的内容:1.txt是{<HTML><HEAD><TITLE>电脑网络技术日记</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="/css/style2.css" type=text/css rel=stylesheet> <!-- 文字加标记符b 红色加粗,加标记符i 蓝色斜体 --> </HEAD> <BODY background="./img/bg03.gif"><pre> <!-- 插入内容开始 --> } 3.txt的内容是:{<!-- 插入内容结束 --> </pre></BODY></HTML> } 可我昨天的这两个文件已经删除了,怎么还会有呢.即使就是附加的昨天的内容,也不对呀,因为它们分别被重复附加了多次.实在不明白了. 难道用这种拖放的方式执行bat.是调用的什么没有被清空的历史变量吗.它与命令行调用或是批处理调用有什么区别呢.而命令行调用或是批处理调用却又能正常执行???? 有请高人来解答了... [ Last edited by zzhh612 on 2007-4-21 at 09:14 AM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |