今天在论坛有人发帖,地址:- http://www.bathome.net/thread-18977-1-1.html
复制代码 我试着写了一些代码,他实际的需求是要把2012这个文件夹备份,并把其中的WAV文件转换成MP3
目录结构是这样的
文件夹 PATH 列表
卷序列号为 00000002 E79E:4944
E:\2012
├─04
│ ├─06
│ │ └─1001
│ │ WH-20120806-093833-03916659677-83747-1010.wav
│ │ WH-20120806-093941-013937323418-83747-1010.wav
│ │ WH-20120806-094101-013837341722-83747-1010.wav
│ │ WH-20120806-094130-013837341722-83747-1010.wav
│ │ WH-20120806-094226-015038003165-83747-1010.wav
│ │
│ ├─07
│ │ └─1002
│ │ WH-20120806-094736-015939158690-83747-1010.wav
│ │ WH-20120806-094816-015939158690-83747-1010.wav
│ │ WH-20120806-094910-037965270288-83747-1010.wav
│ │ WH-20120806-094942-called-83747-1010.wav
│ │
│ └─08
├─05
└─06
按照“年\月\日\编号”这样的规则,但是实际上可能在“日”的目录下会有很多1001 1002 1003这样的文件夹。
现在需要将.wav文件转换成.mp3,然后备份到D盘,而备份的目录结构要和上图一样,唯一差别就是空文件夹不复制。
然后我想了半天,写了下面的代码,好死不死总算能用,但是心里蛮忐忑,总担心会出问题。所以就想发出来,求论坛大神们优化下,我也好学习学习。呵呵- @echo off&setlocal enabledelayedexpansion
- set "file=D:\"
- set "file1=c:\ffmpeg.exe"
- xcopy /s/t/y "%1" "!file!2012\"
- for /f "delims=" %%a in ('dir /s/b/a-d "%1"') do (
- echo.正在转换的文件:%%a
- set str=%%a
- set var=!str:*\=!
- set num=!var:.wav=!
- echo.转换后的文件:!file!!num!.mp3
- echo.Y|!file1! -i "%%a" -ab 32k -ar 8000 "!file!!num!.mp3"
- )
- cls&echo.________________转换完成!
- pause>nul
复制代码 其实最重要的是以前看到论坛的教学贴总不认真,东看一下西看一下。现在发现悲剧了,做个稍微复杂点的,就要东拼西凑……(轻喷^_^) |