
我的文件是 AAAAAAA-01.pdf、BBBBBB-02.pdf、CCCCCCC-03.pdf 我能够使用以下命令在文件夹中生成不带扩展名的文件名的 Excel 列表:
for %%i in (*.pdf) do @echo %%~ni >> C:\LIST.xls
我如何让它获取文件的前 7 个字符?我想要的输出列表只有 AAAAAA 、 BBBBBBB、CCCCCCC ……
我的第二个问题是:如何仅获取破折号 - 之前的那些字符?例如,我的文件是 ABCD-01.pdf、A-03.pdf、AB-00.pdf,...我希望输出为 ABCD、A、AB,...
我找到了这个,set first7=%%I:~0,7%
但不知道如何让它发挥作用。
在此先感谢您的帮助
答案1
@echo off
setlocal enabledelayedexpansion
if exist List.xls del List.xls
for %%a in (*.pdf) do (
set fn=%%~na
set fn=!fn:~0,7!
for /f "tokens=1 delims=-" %%f in ('echo !fn!') do echo %%f>>List.xls
)
这将打印每个文件名的前 7 个字母。但是,如果存在连字符,则它将进一步截断并仅打印连字符之前的字母。
答案2
我如何让它获取文件的前 7 个字符?
我想要的输出列表仅为 AAAAAA , BBBBBBB,CCCCCCC ,...
使用以下批处理文件(提取文件名的前 7 个字母)。
测试.cmd:
@echo off
@Setlocal EnableDelayedExpansion
for %%i in (*.pdf) do (
set _name=%%~ni
echo !_name:~0,7!>> c:\list.xls
)
示例输出:
C:\test>dir *.pdf
Volume in drive C has no label.
Volume Serial Number is C8D0-DF1E
Directory of C:\test
19/06/2015 17:56 0 AAAAAAA-01.pdf
19/06/2015 17:56 0 BBBBBBB-02.pdf
19/06/2015 17:57 0 CCCCCCC-03.pdf
3 File(s) 0 bytes
0 Dir(s) 92,871,524,352 bytes free
C:\test>test
C:\test>type c:\list.xls
AAAAAAA
BBBBBBB
CCCCCCC
C:\test>
我怎样才能仅获取 DASH - 之前的字符?
例如我的文件是 ABCD-01.pdf、A-03.pdf、AB-00.pdf,...我希望输出是 ABCD、A、AB,...
使用以下批处理文件(提取 之前的所有字母-
)
测试.cmd:
@echo off
for /f "usebackq tokens=1 delims=-" %%i in (`dir /b *.pdf`) do echo %%i>> c:\list.xls
示例输出:
C:\test>dir *.pdf
Volume in drive C has no label.
Volume Serial Number is C8D0-DF1E
Directory of C:\test
19/06/2015 18:13 0 A-03.pdf
19/06/2015 17:56 0 AAAAAAA-01.pdf
19/06/2015 18:14 0 AB-00.pdf
19/06/2015 18:13 0 ABCD-01.pdf
19/06/2015 17:56 0 BBBBBBB-02.pdf
19/06/2015 17:57 0 CCCCCCC-03.pdf
6 File(s) 0 bytes
0 Dir(s) 92,870,991,872 bytes free
C:\test>test
C:\test>type c:\list.xls
A
AAAAAAA
AB
ABCD
BBBBBBB
CCCCCCC
C:\test>