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

[文件操作] 批处理如何批量将指定扩展名的文件的名称的前10位字符命名给另一种扩展名的文件

[复制链接]
发表于 2014-11-26 21:57:44 | 显示全部楼层
回复 15# yiwuyun


    *.pdf 匹配到的第一个更名成功后,其他文件都会改名失败
发表于 2014-11-26 22:15:15 | 显示全部楼层
还有这么个规则……学习了。
发表于 2014-11-26 22:19:03 | 显示全部楼层
回复 16# CrLf

@echo off
(for %%a in (*.jpg) do (
    set "name=%%~na"
    setlocal enabledelayedexpansion
    ren *.pdf "!name:~,10!._pdf"
    endlocal
)) 2>nul
ren *._pdf *.pdf

   
再请教一下,这里的setlocal放在for里面是另有用意吗?还是跟放在外部是一样的效果?
发表于 2014-11-26 22:57:08 | 显示全部楼层
本帖最后由 CrLf 于 2014-11-26 22:59 编辑

回复 18# amwfjhh


    这样可以兼容文件名含 ! 的情况,做个对比实验就懂了:
  1. @echo off
  2. (for /f "delims=" %%a in (%~s0) do (
  3.    set str=%%a
  4.    setlocal enabledelayedexpansion
  5.    echo !str!
  6.    endlocal
  7. ))>test1.txt
  8. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (%~s0) do (
  3.    set str=%%a
  4.    echo !str!
  5. ))>test2.txt
  6. pause
复制代码
发表于 2014-11-26 23:00:33 | 显示全部楼层
看得心痒,我换win机子测试下……
发表于 2014-11-26 23:09:36 | 显示全部楼层
回复 20# amwfjhh


    这跟瘟7有啥关系
发表于 2014-11-26 23:17:02 | 显示全部楼层
谢谢。延时理解又多了一分。
发表于 2014-11-26 23:19:23 | 显示全部楼层
回复 21# CrLf


    WINDOWS机子,刚才在MAC上熟悉下操作习惯,看到贴子想测试没环境,只好心痒痒地换到WINDOWS上来测试结果了。
发表于 2014-11-26 23:20:49 | 显示全部楼层
回复 23# amwfjhh


    卧槽,壕,求包养
发表于 2014-11-26 23:24:24 | 显示全部楼层
我要是壕就不需要熟悉了,早就用得不想再用了,这是项目设备,第一天接触……
发表于 2014-11-26 23:28:44 | 显示全部楼层
回复 25# amwfjhh


    我tm上次摸的苹果还是红富士
发表于 2014-11-26 23:34:17 | 显示全部楼层
差点看成“富士康”。
发表于 2014-11-26 23:42:15 | 显示全部楼层
回复 19# CrLf


    除了开启局部延时,set/p好像也对!可以很好支持。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%i in ('^<%~s0 find /c /v ""') do set /a lineCount=%%i
  4. <%~s0 >test2.txt (for /l %%a in (1 1 !lineCount!) do (
  5.    set /p str=
  6.    echo !str!
  7. ))
  8. echo 共 !lineCount! 行
  9. fc test2.txt %~s0
  10. pause
复制代码
发表于 2014-11-26 23:51:07 | 显示全部楼层
本帖最后由 CrLf 于 2014-11-26 23:52 编辑

回复 28# amwfjhh


    是的,变量延迟发生在解析语法之后、执行命令前夕,引用 %%a 的时候会发生变量延迟,而执行 set /p 取得输入之前变量延迟已经发生过了
    set /p 有个缺点是最多读取 1024 字节,超出就被截断,这个相当郁闷
发表于 2014-11-26 23:55:40 | 显示全部楼层
回复 29# CrLf


    一次处理这么多内容我坚决不用批处理了,会把任务分摊给其它工具去,然后把结果返回给批处理再接着整。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 19:27 , Processed in 0.030417 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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