标题: [文件操作] 请各位技术大神进来指教一下,优化代码。 [打印本页]
作者: Bearxy 时间: 2012-9-12 21:10 标题: 请各位技术大神进来指教一下,优化代码。
今天在论坛有人发帖,地址:- 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
复制代码
其实最重要的是以前看到论坛的教学贴总不认真,东看一下西看一下。现在发现悲剧了,做个稍微复杂点的,就要东拼西凑……(轻喷^_^)
作者: apang 时间: 2012-9-12 22:42
不是"大神"。。。
1.遇到有空格的文件夹,用"%~1"似乎好些;
2.FOR本身有变量扩展功能,如%%~pa扩展为路径,%%~na扩展为文件名。- @echo off
- set "Drv=D:"
- set "file=c:\ffmpeg.exe"
- xcopy /s/t/y "%~1" "%Drv%\2012\"
- for /f "delims=" %%a in ('dir /s/b/a-d "%~1"') do (
- echo 正在转换的文件:%%a
- echo 转换后的文件:%Drv%%%~pna.mp3
- echo y|%file% -i "%%a" -ab 32k -ar 8000 "%drv%%%~pna.mp3"
- )
- cls&echo ________________转换完成!
- pause
复制代码
作者: Bearxy 时间: 2012-9-13 08:27
回复 2# apang
%%~pna 扩展到路径和文件名,那为什么前面还需要加上盘符的变量?
作者: apang 时间: 2012-9-13 09:13
回复 3# Bearxy - for %%a in ("c:\a\b\c\123.txt") do (
- echo %%~da
- echo %%~pa
- echo %%~na
- echo %%~xa
- )
- pause
复制代码
作者: Bearxy 时间: 2012-9-13 10:41
回复 4# apang
3Q,这回看明白了。哈哈
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |