找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22850|回复: 7

[文件操作] [已解决]批处理如何修改二级目录下的pdf文件名?

[复制链接]
发表于 2024-1-16 18:08:32 | 显示全部楼层 |阅读模式
本帖最后由 liaoguinan 于 2024-1-16 22:57 编辑




如何修改每个文件夹下的pdf文件名?
按顺序从1开始排,如下图




评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-1-16 19:05:23 | 显示全部楼层
如果显示正确,去掉 13行 #
  1. @cd /d %~dp0 & powershell -command "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit/b

  2. Get-ChildItem -Path . -Directory | ForEach-Object {
  3.         $fName = $_.Name
  4.         Push-Location $_
  5.         $i = 0
  6.         Get-ChildItem -Path . -File | Sort-Object {
  7.                 ( $_.basename -replace "${fName}-","" ) -as [int]
  8.                 } | ForEach-Object {
  9.                 $i++
  10.                 $NameNew = "${fName}-$i" + $_.Extension
  11.                 $_.Name + " " + $NameNew
  12.                 #Rename-Item $_ $NameNew
  13.         }
  14.         Pop-Location
  15. }
复制代码
 楼主| 发表于 2024-1-16 20:56:28 | 显示全部楼层
回复 2# newswan


    13行的代码如果注释掉的话执行没任何修改,去掉注释,能修改序号,但是会把后面的中文字都删掉了
 楼主| 发表于 2024-1-16 20:56:59 | 显示全部楼层
回复 2# newswan


    如何保留后面的中文字且修改序号?
发表于 2024-1-16 21:39:58 | 显示全部楼层
  1. @cd /d %~dp0 & powershell -command "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit/b

  2. Get-ChildItem -Path . -Directory | ForEach-Object {
  3.         $fName = $_.Name
  4.         Push-Location $_
  5.         $i = 0
  6.         Get-ChildItem -Path . -File | Sort-Object {
  7.                 ( $_.BaseName -replace "${fName}-(\d+).*","`$1" ) -as [int]
  8.                 } | ForEach-Object {
  9.                 $i++
  10.                 $NameNew = "${fName}-$i" + ( $_.BaseName -replace "${fName}-(\d+)","" ) + $_.Extension
  11.                 $_.Name + "    " + $NameNew
  12.                 #Rename-Item $_ -NewName $NameNew
  13.         }
  14.         Pop-Location
  15. }
复制代码
回复 4# liaoguinan

评分

参与人数 1技术 +1 收起 理由
liaoguinan + 1 技术强硬

查看全部评分

 楼主| 发表于 2024-1-16 22:56:43 | 显示全部楼层
回复 5# newswan


    感谢辛苦了完美
发表于 2024-1-17 10:09:16 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-1-17 20:29 编辑

用纯P练练手,未测试,可能有误:
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad') do (
  3.     pushd "%%i"
  4.     setlocal enabledelayedexpansion
  5.     for /f "tokens=2* delims=-" %%a in ('dir /b /a-d *.pdf') do (
  6.         set str=%%b
  7.         set /a n=str
  8.         if !n! gtr 0 (
  9.             if !n! lss 10 (
  10.                 set _a_!n!=!str:~1!
  11.             ) else if !n! lss 100 (
  12.                 set _b_!n!=!str:~2!
  13.             ) else if !n! lss 1000 (
  14.                 set _c_!n!=!str:~3!
  15.             )
  16.         )
  17.     )
  18.     for /f "tokens=2* delims=_=" %%a in ('set _') do (
  19.         set /a m+=1
  20.         ren "%%i-%%a%%b" "%%i-!m!%%b"
  21.     )
  22.     endlocal
  23.     popd
  24. )
  25. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
liaoguinan + 1 可以用但是会提示运算符不存在

查看全部评分

发表于 2024-1-17 20:31:21 | 显示全部楼层
回复 1# liaoguinan
修改第7行,将一对叹号去掉试试,已修改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:35 , Processed in 0.021308 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表