[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 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
复制代码

TOP

回复 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里面是另有用意吗?还是跟放在外部是一样的效果?

TOP

还有这么个规则……学习了。

TOP

回复 15# yiwuyun


    *.pdf 匹配到的第一个更名成功后,其他文件都会改名失败

TOP

ren *.pdf "!name:~,10!._pdf"
这一句没问题吗?我总感觉怪怪的喃,我没试过。如果是正确的,要怎么解释喃?*不是代表所有吗?而后面那个
"!name:~,10!._pdf"是代表一个文件啊。所有对一个,有点讲不通啊。难道一直以来我就理解错了,*是代表单一?

TOP

回复 13# kmustwxw


    哦是的,混乱了

TOP

回复 11# CrLf
ren "!strPDF!" "%%~ni.pdf" 改成 ren "!strPDF:~,10!" "%%~ni.pdf"  你说的这段代码好像有问题。你的最爱没有问题能解决问题,很好,很强大,我改了下:ren "!strPDF!" "%%~ni.pdf" 改成 ren "!strPDF!" "!strPDF:~,10!.pdf" 不知道对不对?

TOP

非常感谢帮你们的帮助,很感激,很好,很张大。努力学习中

TOP

回复 9# DAIC


ren "!strPDF!" "%%~ni.pdf" 改成 ren "!strPDF:~,10!" "%%~ni.pdf"
再来个我最爱的:
  1. @echo off
  2. (for %%a in (*.jpg) do (
  3.     set "name=%%~na"
  4.     setlocal enabledelayedexpansion
  5.     ren *.pdf "!name:~,10!._pdf"
  6.     endlocal
  7. )) 2>nul
  8. ren *._pdf *.pdf
复制代码

TOP

太感谢你了,我运行了下,我要是想取jpg的文件名的前10位,应该怎么修改代码?还有就是:下面这段代码哪里有不对的,如何修改,谢谢。
  1. @echo on&setlocal enabledelayedexpansion
  2. for /f %%a in ('dir *.jpg /b') do (for /f %%b in ('dir *.pdf /b') do set a=%%a&set a=!a:~0,10!&ren %%b !a!.pdf
  3. )
  4. pause
复制代码

TOP

回复 5# kmustwxw
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. dir /b *.jpg >file_jpg.txt
  4. dir /b *.pdf >file_pdf.txt
  5. (for /f "delims=" %%i in (file_jpg.txt) do (
  6.     set /p strPDF=
  7.     ren "!strPDF!" "%%~ni.pdf"
  8. ))<file_pdf.txt
复制代码

TOP

[img][/img]
看看图片的对应关系,jpg和pdf数目一样,不会一个多一个少的,看看下面的代码,也许有帮助,但是运行的结果不对,找不到文件。
  1. @echo on&setlocal enabledelayedexpansion
  2. for /f %%a in ('dir *.jpg /b') do (for /f %%b in ('dir *.pdf /b') do set a=%%a&set a=!a:~0,-5!&ren %%b !a!.pdf
  3. )
  4. pause
复制代码

TOP

你就直接把你要做的事说出来,就简单了,否则,你再喊上几个月,大家也帮补了你。

TOP

回复 5# kmustwxw
不太清除你的这个要求,那要是PDF多余或少于jpg文件,不就对应不上了,你这个程序主要用来干嘛?

搞技术最不爽的就是需求描述不清。。。。。。。。

TOP

不好意思,我再说下,对应起来就根据它们在文件夹里按名称的排列来对应,它们都放在一个文件夹里,按你上面列举的,把第一个图片的名字,命名给第一个pdf. 如?张三.pdf改为:我的图片1234567.pdf  李四.pdf应改为:我的图片1234568.pdf,依此下去,不知道我说的清楚不?

TOP

返回列表