如题,我要用批处理命令提取3个文件夹下的文件名称保存成TXT文件列表,
3个文件夹路径假设是c:\123 d:\123 e:\123(可能是中文并且名称中间有空格),要提取的文件的扩展名是.CDR和.AI(可能是中文并且名称中间有空格),最后生成的文件列表保存在本用户的桌面上.
请大家在本机测试后在发,谢谢!更正说明2点:
1.三个文件夹分别是(d:\2006文档),(d:\2007文档)和(e:\2008文档)每个文件夹里的文件命名中文英文符号不规则,但是绝对没有WINDOWS不允许的字符,文件夹里.CDR和.AI文件同时存在且可能名称相同,生成的列表请照旧把他们都列出来--这点很重要!!!
2.除了1楼的代码没有测试外其他的都试验了,居然没有一个能通过,没有通过的原因是桌面没有任何东西出现(就是说没有列表在桌面生成),不知道是什么原因,在此说明一下,我用的是windows xp系统,登陆用户有好几个,请大家在代码里把用户改成变量值.
3.请大家在列表方面向k4me看齐,把每个文件夹的列表最后合成1个总的列表文件,2/3/4/5楼的朋友写的代码我没有看明白,那样的代码效果不是后1个列表覆盖前1个列表吗?数据是合成还是替换?我要的是3个文件夹的汇总,请注意"汇总"2个字,谢谢!!!!请大家再努力一下,k4me朋友的回答虽然没有生成列表出现,但是思路跟我的要求完全吻合,而且相当高深,就靠你了哥们,赶紧帮俺看一下问题出在那里吧!!!
我还以为只有mm需要点点鼠标就完事的程序
原来lz也想直接点点鼠标就ok
下面这个程序应该满足要求了
每一步都有提示,最后可以直接打开列表文件
@echo off
setlocal
set listpath=%allusersprofile%\桌面
if not exist "%listpath%" (
echo 桌面路径错误,请检查桌面路径设置
pause
exit
)
set source1=d:\2006文档
set source2=d:\2007文档
set source3=e:\2008文档
set fcount=0
set total=0
echo 处理中...
echo 文件名,后缀名,位置>"%listpath%\列表.csv"
if not exist "%source1%" (
echo 路径%source1%不存在,请检查路径设置
pause
exit /b
)
echo 正在%source1%中寻找所有cdr文件...
for /r "%source1%" %%a in (*.cdr) do (
echo %%~na,cdr,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source1%找到%fcount%个*.csv
set /a total+=%fcount%
set fcount=0
echo 正在%source1%中寻找所有ai文件...
for /r "%source1%" %%a in (*.ai) do (
echo %%~na,ai,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source1%找到%fcount%个ai文件
set /a total+=%fcount%
set fcount=0
if not exist "%source2%" (
echo 路径%source2%不存在,请检查路径设置
pause
exit /b
)
echo 正在%source2%中寻找所有cdr文件...
for /r "%source2%" %%a in (*.cdr) do (
echo %%~na,cdr,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source2%找到%fcount%个*.csv
set /a total+=%fcount%
set fcount=0
echo 正在%source2%中寻找所有ai文件...
for /r "%source2%" %%a in (*.ai) do (
echo %%~na,ai,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source2%找到%fcount%个ai文件
set /a total+=%fcount%
set fcount=0
if not exist "%source3%" (
echo 路径%source3%不存在,请检查路径设置
pause
exit /b
)
echo 正在%source3%中寻找所有cdr文件...
for /r "%source3%" %%a in (*.cdr) do (
echo %%~na,cdr,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source3%找到%fcount%个*.csv
set /a total+=%fcount%
set fcount=0
echo 正在%source3%中寻找所有ai文件...
for /r "%source3%" %%a in (*.ai) do (
echo %%~na,ai,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source1%找到%fcount%个ai文件
set /a total+=%fcount%
set fcount=0
echo 在%source1%,%source1%,%source1%中共找到%total%个符合要求的条件
echo 列表文件保存在%listpath%\列表.csv
set /p choise=是否要立刻打开列表文件?(y/n)[y]:
if "%choise%"==n (exit /b) else "%listpath%\列表.csv"
原来lz也想直接点点鼠标就ok
下面这个程序应该满足要求了
每一步都有提示,最后可以直接打开列表文件
@echo off
setlocal
set listpath=%allusersprofile%\桌面
if not exist "%listpath%" (
echo 桌面路径错误,请检查桌面路径设置
pause
exit
)
set source1=d:\2006文档
set source2=d:\2007文档
set source3=e:\2008文档
set fcount=0
set total=0
echo 处理中...
echo 文件名,后缀名,位置>"%listpath%\列表.csv"
if not exist "%source1%" (
echo 路径%source1%不存在,请检查路径设置
pause
exit /b
)
echo 正在%source1%中寻找所有cdr文件...
for /r "%source1%" %%a in (*.cdr) do (
echo %%~na,cdr,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source1%找到%fcount%个*.csv
set /a total+=%fcount%
set fcount=0
echo 正在%source1%中寻找所有ai文件...
for /r "%source1%" %%a in (*.ai) do (
echo %%~na,ai,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source1%找到%fcount%个ai文件
set /a total+=%fcount%
set fcount=0
if not exist "%source2%" (
echo 路径%source2%不存在,请检查路径设置
pause
exit /b
)
echo 正在%source2%中寻找所有cdr文件...
for /r "%source2%" %%a in (*.cdr) do (
echo %%~na,cdr,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source2%找到%fcount%个*.csv
set /a total+=%fcount%
set fcount=0
echo 正在%source2%中寻找所有ai文件...
for /r "%source2%" %%a in (*.ai) do (
echo %%~na,ai,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source2%找到%fcount%个ai文件
set /a total+=%fcount%
set fcount=0
if not exist "%source3%" (
echo 路径%source3%不存在,请检查路径设置
pause
exit /b
)
echo 正在%source3%中寻找所有cdr文件...
for /r "%source3%" %%a in (*.cdr) do (
echo %%~na,cdr,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source3%找到%fcount%个*.csv
set /a total+=%fcount%
set fcount=0
echo 正在%source3%中寻找所有ai文件...
for /r "%source3%" %%a in (*.ai) do (
echo %%~na,ai,%%~dpa>>"%listpath%\列表.csv"
set /a fcount+=1
)
echo 在%source1%找到%fcount%个ai文件
set /a total+=%fcount%
set fcount=0
echo 在%source1%,%source1%,%source1%中共找到%total%个符合要求的条件
echo 列表文件保存在%listpath%\列表.csv
set /p choise=是否要立刻打开列表文件?(y/n)[y]:
if "%choise%"==n (exit /b) else "%listpath%\列表.csv"
温馨提示:答案为网友推荐,仅供参考
第1个回答 2008-12-11
cd \
c:
cd 123
dir *.cdr *.ai>你桌面的路径\drive c.txt
cd \
d:
cd 123
dir *.cdr *.ai>你桌面的路径\drive d.txt
cd \
e:
cd 123
dir *.cdr *.ai>你桌面的路径\drive e.txt
c:
cd 123
dir *.cdr *.ai>你桌面的路径\drive c.txt
cd \
d:
cd 123
dir *.cdr *.ai>你桌面的路径\drive d.txt
cd \
e:
cd 123
dir *.cdr *.ai>你桌面的路径\drive e.txt
第2个回答 2008-12-11
dir/b c:\123\*.cdr >> "%userprofile%\桌面\a.txt"
dir/b c:\123\*.ai >> "%userprofile%\桌面\a.txt"
dir/b d:\123\*.cdr >> "%userprofile%\桌面\a.txt"
dir/b d:\123\*.ai >> "%userprofile%\桌面\a.txt"
dir/b e:\123\*.cdr >> "%userprofile%\桌面\a.txt"
dir/b e:\123\*.ai >> "%userprofile%\桌面\a.txt"
保存成bat文件就行了,a.txt是文件列表
“一定要过滤掉(.cdr)和(.ai)字符”,不明白,你不是要提取.ai和.cdr的文件吗?其他都已实现,保存到excel里dos下做不了,直接复制到excel里不就行了。
dir/b c:\123\*.ai >> "%userprofile%\桌面\a.txt"
dir/b d:\123\*.cdr >> "%userprofile%\桌面\a.txt"
dir/b d:\123\*.ai >> "%userprofile%\桌面\a.txt"
dir/b e:\123\*.cdr >> "%userprofile%\桌面\a.txt"
dir/b e:\123\*.ai >> "%userprofile%\桌面\a.txt"
保存成bat文件就行了,a.txt是文件列表
“一定要过滤掉(.cdr)和(.ai)字符”,不明白,你不是要提取.ai和.cdr的文件吗?其他都已实现,保存到excel里dos下做不了,直接复制到excel里不就行了。
第3个回答 2008-12-11
@echo off
for /r "c:\123" %%a in (*.cdr) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "c:\123" %%a in (*.ai) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "d:\123" %%a in (*.cdr) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "d:\123" %%a in (*.ai) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "e:\123" %%a in (*.cdr) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "e:\123" %%a in (*.ai) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "c:\123" %%a in (*.cdr) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "c:\123" %%a in (*.ai) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "d:\123" %%a in (*.cdr) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "d:\123" %%a in (*.ai) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "e:\123" %%a in (*.cdr) do echo %%~na>>"%userprofile%\桌面\list.csv"
for /r "e:\123" %%a in (*.ai) do echo %%~na>>"%userprofile%\桌面\list.csv"
第4个回答 2008-12-11
@echo off
rem 设置目录
set "mulu1=c:\123"
set "mulu2=d:\123"
set "mulu3=e:\123"
for /r "%mulu1%" %%a in (*.CDR *.AL) do echo %%~na>>"%USERPROFILE%\桌面\目录文件列表.txt"
for /r "%mulu2%" %%a in (*.CDR *.AL) do echo %%~na>>"%USERPROFILE%\桌面\目录文件列表.txt"
for /r "%mulu3%" %%a in (*.CDR *.AL) do echo %%~na>>"%USERPROFILE%\桌面\目录文件列表.txt"
echo 列表生成成功,任意键退出
pause>nul&exit
保存为.bat,这样就可以了哈
rem 设置目录
set "mulu1=c:\123"
set "mulu2=d:\123"
set "mulu3=e:\123"
for /r "%mulu1%" %%a in (*.CDR *.AL) do echo %%~na>>"%USERPROFILE%\桌面\目录文件列表.txt"
for /r "%mulu2%" %%a in (*.CDR *.AL) do echo %%~na>>"%USERPROFILE%\桌面\目录文件列表.txt"
for /r "%mulu3%" %%a in (*.CDR *.AL) do echo %%~na>>"%USERPROFILE%\桌面\目录文件列表.txt"
echo 列表生成成功,任意键退出
pause>nul&exit
保存为.bat,这样就可以了哈
第5个回答 2008-12-11
---------------------------------------
setlocal ENABLEDELAYEDEXPANSION
del k4me*.txt
del "%userprofile%\桌面\k4me_output.txt"
for %%i in (c d e) do dir /on /b /a "%%i:\123\*.cdr" >>k4me1.txt
for %%i in (c d e) do dir /on /b /a "%%i:\123\*.ai" >>k4me2.txt
for /f "tokens=* delims=" %%i in (k4me1.txt) do (
set kk=%%i
@echo !kk:~0,-4!>>"%userprofile%\桌面\k4me_output.txt"
)
for /f "tokens=* delims=" %%i in (k4me2.txt) do (
set kk=%%i
@echo !kk:~0,-3!>>"%userprofile%\桌面\k4me_output.txt"
)