标题: [求助]批处理for /r遇到的问题:如何全盘分区遍历mp3文件
[打印本页]
作者: slx8528
时间: 2009-3-18 00:52
标题: [求助]批处理for /r遇到的问题:如何全盘分区遍历mp3文件
我用for /r搜索硬盘所有分区的mp3文件,出现“不能有d”,set命令和for命令不是很好,看看哪里错了,应该怎么写?谢谢!
代码如下:
@echo off
set var=c d e f
for /r %var% %%i in (*.mp3) do echo %%i
pause
[ Last edited by slx8528 on 2009-3-18 at 02:02 ]
作者: newxso
时间: 2009-3-18 01:09
@echo off
for %%a in (c d e f) do (
if exist %%a:\ (
cd/d %%a:\
for /r %%b in ("*.mp3") do echo/%%~fb >>c:\a.txt
))
(RE:4楼)
在 cd /? 和 for /? 的信息中有详细说明。
cd /d 就是改变当前的驱动器和目录(cd /d e:\test 相当于 e: 和 cd test 两行命令的组合),由于没有文件夹,以上句子可以把 cd/d %%a:\ 换成 %%a:
另外,可以用 pushd 命令使 %%a: 成为当前目录,并且可以用 popd 来取消 pushd 的操作,还原原来目录:
@echo off
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist %%a:\ (
pushd %%a:\
for /r %%b in ("*.mp3") do (
popd
echo/%%~fb >>a.txt
)))
看到好处?就是创建的文本不需要加入路径(在与批处理相同目录下生成)。
在 for 语句中:
%%~i - 删除 %%i 中的所有引号
%%~fi - 将 %%i 扩充到一个完全合格的路径名
%%~di - 仅将 %%i 扩充到一个驱动器号
%%~pi - 仅将 %%i 扩充到一个路径
%%~ni - 仅将 %%i 扩充到一个文件名
%%~xi - 仅将 %%i 扩充到一个文件扩展名
%%~si - 扩充的路径只含有短名
%%~ai - 将 %%i 扩充到文件的文件属性
%%~ti - 将 %%i 扩充到文件的日期/时间
%%~zi - 将 %%i 扩充到文件的大小
%%~dpi - 仅将 %%i 扩充到一个驱动器号和路径
%%~nxi - 仅将 %%i 扩充到一个文件名和扩展名
%%~fsi - 仅将 %%i 扩充到一个带有短名的完整路径名
例如,可以用 echo.%%~nxb 只获取MP3文件名和扩展名,用 %%~zb 来检测MP3文件的大小等。
[
Last edited by newxso on 2009-3-18 at 08:05 ]
作者: netbenton
时间: 2009-3-18 01:28
for %%a in (c d e f) do (call :sub %%a)
goto :eof
:sub
for /r %1:\ %%b in (*.mp3) do echo.%%b
作者: slx8528
时间: 2009-3-18 02:18
是双层循环,我测试一下,很好!
麻烦你能能帮我大概解释一下,好吗?尤其是:cd/d %%a:\那一点,更改目录cd/d不大懂的,还有:echo/%%~fb,
谢谢!
作者: slx8528
时间: 2009-3-18 02:19
是双层循环,我测试一下,很好!
麻烦你能能帮我大概解释一下,好吗?尤其是:cd/d %%a:\那一点,更改目录cd/d不大懂的,还有:echo/%%~fb,
谢谢!
作者: zerayro
时间: 2009-4-5 05:09