中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 08:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何根据文件名来复制文件? 查看 1,083 回复 11
楼 主 [求助]如何根据文件名来复制文件? 发表于 2008-08-03 16:28 ·  中国 河北 保定 联通
新手上路
积分 10
发帖 4
注册 2008-08-03 09:27
18年会员
UID 122686
性别 男
状态 离线
本人是做MP3下载的,请高手们帮忙写个下载mp3的工具,具体内容如下:

我的mp3都在 E:\mp3 文件夹里,每首歌曲都已经有了编号(如:1037做你的爱人.mp3),借助这个工具,只要输入编号就可以将歌曲复制到 C:\mp3文件夹里。然后再提示输入要下载的歌曲编号。


我脑子里想的步骤大概的样子就是下面这样:

A:屏幕提示:请输入要下载的歌曲的编号
B:操作者输入号码(注:不是全文件名,只输入号码,不输入汉字)
C:计算机自动在 E:\mp3 文件夹里查找该歌曲,如果找到就复制到 C:\mp3文件夹里,没有找到就提示:编号错误,请重新输入
D:屏幕提示:下载完成,请输入要下载的歌曲的编号

[ Last edited by lxmxn on 2008-8-6 at 04:46 AM ]
2 发表于 2008-08-03 17:12 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
@echo off
:start
echo.
set /p id=请输入要下载的歌曲的编号:
echo 正在下载……
for /f "delims=" %%i in ('dir /b E:\mp3\^|findstr "%id%"') do (
echo copy E:\mp3\%%i D:\mp3\
)
echo 下载完成!
echo.
goto :start
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2008-08-03 17:36 ·  中国 广东 东莞 电信
初级用户
积分 22
发帖 11
注册 2008-07-10 21:36
18年会员
UID 121337
性别 男
状态 离线

@echo off
color 3&echo,
:first
set/p no= 请输入要下载的歌曲的编号:
if exist e:\mp3\%no%*.mp3 (
xcopy/y e:\mp3\%no%*.mp3 c:\mp3\ >nul
cls&echo,&echo 下载完成 &goto first
)
cls&echo,&echo 编号错误,请重新输入&goto first
4 发表于 2008-08-03 18:06 ·  中国 云南 昆明 电信
中级用户
★★
积分 220
发帖 99
注册 2008-06-26 15:12
18年会员
UID 120818
性别 男
状态 离线
@echo off
:start
set /p z=请输入要下载的歌曲的编号:
dir /a /s E:\mp3\%z%.mp3 & cls
if %errorlevel%==0 (echo 正在下载编号:%z%.mp3 & copy /y %z%.mp3 >nul C:\mp3\) else echo 编号错误,请重新输入 & goto start
echo 下载成功...回车后继续...
echo.&pause>nul
goto start
5 发表于 2008-08-03 18:13 ·  中国 河北 保定 联通
新手上路
积分 10
发帖 4
注册 2008-08-03 09:27
18年会员
UID 122686
性别 男
状态 离线
谢谢大家帮忙,我去试试
6 发表于 2008-08-03 19:06 ·  中国 河北 保定 联通
新手上路
积分 10
发帖 4
注册 2008-08-03 09:27
18年会员
UID 122686
性别 男
状态 离线
楼上的朋友,刚才我试过了,2楼的方法总是提示复制成功,其实没有复制;4楼的总试提示输入错误,也不能复制,请帮我修改一下,谢谢
7 发表于 2008-08-03 19:33 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
把2楼的代码的echo copy E:\mp3\%%i D:\mp3\ 中的 echo 去掉。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
8 发表于 2008-08-03 19:52 ·  中国 云南 昆明 电信
中级用户
★★
积分 220
发帖 99
注册 2008-06-26 15:12
18年会员
UID 120818
性别 男
状态 离线
Originally posted by zhaojianzeng at 2008-8-3 07:06 PM:
楼上的朋友,刚才我试过了,2楼的方法总是提示复制成功,其实没有复制;4楼的总试提示输入错误,也不能复制,请帮我修改一下,谢谢



晕```是不是你给的路径有错啊?我在我这试着都好的啊.
9 发表于 2008-08-06 04:09 ·  中国 广东 广州 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
不能光用 findstr。。
需要完整提取数字id
知,不觉多。不知,乃求知
10 发表于 2008-08-06 04:10 ·  中国 广东 广州 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
否则出现
10—111。mp3
101--112。mp3
的时候会拷贝两首歌曲。
知,不觉多。不知,乃求知
11 发表于 2008-08-06 16:27 ·  中国 广东 东莞 电信
初级用户
积分 22
发帖 11
注册 2008-07-10 21:36
18年会员
UID 121337
性别 男
状态 离线
给你一个较完整的:

@echo off&color 3&echo\
:first
echo,&set/p no= 请输入要下载的歌曲的编号:
cls&if /i exist e:\mp3\%no%*.mp3 (
for /f "delims=." %%i in ('dir /b e:\mp3\%no%*.mp3') do (
if /i "%%i" equ "%no%" (xcopy/y "e:\mp3\%%i.mp3" c:\mp3\ >nul
echo,&echo 正在下载 ^<^< %%i.mp3 ^>^> …… &echo 完成
) else (if /i "%%i" geq "%no%a" (xcopy/y "e:\mp3\%%i.mp3" c:\mp3\ >nul
echo,&echo 正在下载 ^<^< %%i.mp3 ^>^> …… &echo 完成
) else (if /i "%%i" leq "%no% " (xcopy/y "e:\mp3\%%i.mp3" c:\mp3\ >nul
echo,&echo 正在下载 ^<^< %%i.mp3 ^>^> …… &echo 完成
) ) ) )
goto first
)
cls&echo,&echo 编号错误,请重新输入&goto first

避免了楼上提出的问题
12 发表于 2008-08-07 18:52 ·  中国 河北 保定 联通
新手上路
积分 10
发帖 4
注册 2008-08-03 09:27
18年会员
UID 122686
性别 男
状态 离线
不好意思,这两天出门了,今天回来弄好了,就是用2楼的方法去掉echo后,再把歌曲放到“ ”里面就行了,不然遇到有空格的歌曲名就不能下载了,一会去试试11楼的方法,好的话再回来顶你,谢谢各位了
论坛跳转: