Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Batch file 使用批处理删除部分文件名_Batch File_File Rename - Fatal编程技术网

Batch file 使用批处理删除部分文件名

Batch file 使用批处理删除部分文件名,batch-file,file-rename,Batch File,File Rename,我已经尝试过对类似问题提供的许多代码进行调整,但我认为解决方案尚未发布。我的问题是,我想从中删除其余部分的部分在最后一个之前存在2次 我有一个文件夹,其中包含: number1-number2-number3 - some random text about the file.filetype 数字1的范围为01到99 数字2的范围为1-99999 数字3的范围为1-999,可能为2位小数,与整数之间用空格分隔 示例文件夹c:\temp\: 15-1592-1 - file 1.doc 15-

我已经尝试过对类似问题提供的许多代码进行调整,但我认为解决方案尚未发布。我的问题是,我想从中删除其余部分的部分在最后一个之前存在2次

我有一个文件夹,其中包含:

number1-number2-number3 - some random text about the file.filetype
数字1的范围为01到99
数字2的范围为1-99999
数字3的范围为1-999,可能为2位小数,与整数之间用空格分隔

示例文件夹
c:\temp\

15-1592-1 - file 1.doc
15-1592-2 - this is file2.pdf
15-1592-3 - this cointains subfiles.html
15-1592-3.1 - sub1.jpg
15-1592-3.2 - sub2.pdf
我需要的是一个文件夹,在这个文件夹中,数字3结束后的所有内容都从文件名中删除,但文件类型不变

例如:

15-1592-1.doc
15-1592-2.pdf
15-1592-3.html
15-1592-3.1.jpg
我理解这是可能的,从阅读所有的答案加起来


我所缺乏的是汇编这一切的知识

提取小数部分(如果存在)有点棘手,但这应该可以完成(可能需要一些象征性的调整以满足您的需要)


您想删除第一个空格后的所有内容(不带扩展名)
如果使用修饰符,这非常容易(请参阅
以获取/?
):


到目前为止你试过什么?请通过问题帖分享您的代码!我还没有看到你的答案。巧妙地使用通配符,我完全忘记了。是的。真的很有帮助!非常感谢。
@echo off

setlocal enabledelayedexpansion

set "source_path=c:\temp\*"

for /f "tokens=1,* delims=." %%a in ('dir /b %source_path%') do (
  set "ext=" & set "decimal="
  for /f "tokens=1,* delims=." %%i in ("%%b") do (
    if "%%j" neq "" (
       set "ext=%%j"
       for /f "tokens=1,* delims=- " %%d in ("%%i") do set "decimal=.%%d"
    ) else (
       set "ext=%%i"
    )
  )
  for /f "tokens=1-3,* delims=- " %%i in ("%%a") do (
    rem replace echo with operation you need 
    echo %%i-%%j-%%k!decimal!.!ext!
  )  
)  

endlocal
@echo off
setlocal enabledelayedexpansion
for %%a in (??-*-*) do (
  for /f "tokens=1 delims= " %%b in ("%%~na") do (
     ECHO ren "%%a" "%%b%%~xa"
  )
)