我有一个文件夹,我在其中执行print to file选项,它将我的打印作业保存为pcl文件。我用来打印文件的软件按以下方式命名每个文件:GUID.XX.pcl其中XX是数字。
例如:
View > Word Wrap
我想要做的是重命名文件,使它们看起来像这样:
1.pcl
2.pcl
3.pcl
等等。
这是我使用的批次:
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.6.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.7.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.8.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.9.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.10.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.11.pcl
这可行,但问题是,在我上面给出的例子中 它重命名
for %%a in (*.pcl) do (
set /a i+=1
ren "%%a" "!i!.new"
)
ren *.new *.pcl
和
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.10.pcl to 1.pcl
我需要它重命名
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.6.pcl to 3.pcl
和
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.6.pcl to 1.pcl
它基本上是在6之前看到10。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
for /F "tokens=1-3 delims=." %%a in ('dir /B *.pcl') do (
set /A num=100+%%b
set "name[!num:~1!]=%%a.%%b.%%c"
)
for /F "tokens=2 delims==" %%a in ('set name[') do (
set /A i+=1
ren "%%a" "!i!.pcl"
)
如果您想在新名称中使用两位数字,那么订单会保留在dir
或for
个列表中,请以这种方式修改第二部分:
set i=100
for /F "tokens=2 delims==" %%a in ('set name[') do (
set /A i+=1
ren "%%a" "!i:~1!.pcl"
)
编辑:我测试了我的代码,它运行正常。这是测试会话的输出:
C:\> dir /b
test.bat
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.10.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.11.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.6.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.7.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.8.pcl
{2E594442-FDF9-4992-88DA-EA4ED2811ECD}.9.pcl
C:\> test
C:\> dir /b
1.pcl
2.pcl
3.pcl
4.pcl
5.pcl
6.pcl
test.bat
C:\> type test.bat
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=1-3 delims=." %%a in ('dir /B *.pcl') do (
set /A num=100+%%b
set "name[!num:~1!]=%%a.%%b.%%c"
)
for /F "tokens=2 delims==" %%a in ('set name[') do (
set /A i+=1
ren "%%a" "!i!.pcl"
)
答案 1 :(得分:0)
未经测试:
for %%a in (*.pcl) do (
for /f "tokens=2 delims=}" %%# in ("%%~nxa") do (
ren "%%~fa" "%%#"
)
)