Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 使用批处理文件重命名文件夹中的多个图像_File_Batch File_Dos_Rename - Fatal编程技术网

File 使用批处理文件重命名文件夹中的多个图像

File 使用批处理文件重命名文件夹中的多个图像,file,batch-file,dos,rename,File,Batch File,Dos,Rename,我有一个文件夹,里面的图片格式为filename.com\u XXX\u IMG\u 000.jpg。这个问题是因为文件名中有一个.com,它混淆了我用来上传到Web空间的软件 我需要创建一个批处理文件,获取文件夹中的所有图像,并从filename.com\u XXX\u IMG\u 000.jpg=>filename\u XXX\u IMG\u 000.jpg重命名所有图像 任何帮助都将非常有用,请提前感谢。因为您希望在批处理文件中执行此操作: @echo off for /f "delim

我有一个文件夹,里面的图片格式为filename.com\u XXX\u IMG\u 000.jpg。这个问题是因为文件名中有一个.com,它混淆了我用来上传到Web空间的软件

我需要创建一个批处理文件,获取文件夹中的所有图像,并从filename.com\u XXX\u IMG\u 000.jpg=>filename\u XXX\u IMG\u 000.jpg重命名所有图像


任何帮助都将非常有用,请提前感谢。

因为您希望在批处理文件中执行此操作:

@echo off

for /f "delims=. tokens=1,2,3" %%f in ('dir /b *.jpg') do (
  setlocal enabledelayedexpansion

  set part=%%g

  if "!part:~0,3!"=="com" (
    set oldname=%%f.%%g.%%h
    set newname=%%f.!part:~4!.%%h
    echo "!oldname!" -^> "!newname!"
    ren "!oldname!" "!newname!"
  )

  endlocal
)
一些注释

  • for
    循环变量是单字母,如下所示:
    %f
  • 在批处理文件中,必须转义
    %
    ,因此
    %f
    变为
    %f
  • delims=。
    处的文件名拆分为三部分
  • tokens=1,2,3
    返回包含单个名称部分的三个变量(
    %f
    %g
    %h
  • enabledelayedexpansion
    打开动态变量处理
  • 您可以使用变量执行字符串操作:
    %foo:~0,3%
    返回
    %foo%
    的前三个字符
  • 启用延迟扩展后,您可以使用
    访问更改其值的变量而不是
    %
  • 必须转义,否则
    echo
    不会打印它,因此
    ^>
  • 阅读更多关于

阅读
的帮助,然后尝试以下操作

@echo off
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
  set fn=%%~na
  set fn=!fn:.com=!
  echo REN "%%a" "!fn!.jpg"
)
您需要启用延迟扩展,因为您需要在for循环中扩展一个变量

循环遍历当前目录中的所有jpg文件,并使用
~n
语法提取每个文件的文件名,然后用空字符串替换
.com
来删除所有出现的文件名。阅读
帮助集


仔细测试后,删除
echo
命令

此操作有效,但会删除com,但不会删除filename.com之前的点。\u XXX=>filename.\u XXX。您将如何修改以删除圆点?@Chill如果您真的阅读了我的代码并眯起眼睛,您就会看到它。找到它设置为newname=%%f。!零件:~4.%h=>设置新名称=%%f!零件:~4.%h谢谢您的帮助此功能完成后,您将如何运行另一个批处理文件?@Chill与从命令行启动它的方式相同。谢谢您的方法,但我尝试过,但没有成功。我把批处理文件和图片放在同一个文件夹里,对吗?