【问题标题】:Remove Last Characters from my filenames in windows在 Windows 中从我的文件名中删除最后一个字符
【发布时间】:2015-03-11 23:13:44
【问题描述】:

我对批处理编程很陌生,我想删除文件名中的最后一个字符。

10_myfile_12345_6789.txt
11_myfile_12345_0987.txt

我想删除文件名的最后 4 位数字,我该怎么做?

我试过了

@echo off
setlocal enabledelayedexpansion
set X=3
set FOLDER_PATH=
pushd %FOLDER_PATH%
for %%f in (*) do if %%f neq %~nx0 (
    set "filename=%%~nf"
    ren "%%f" "!filename!%%~xf"
)
popd
PAUSE

但它会删除第一个和最后一个字符,我也只在这里看到过这个,我仍然很困惑这是如何工作的

【问题讨论】:

  • 什么语言。你试过什么?
  • 我已经编辑了我的帖子,我在 dos 上运行它
  • @XanderVane 您是否要删除文件扩展名?还是您要删除文件扩展名前的四个字符?例如 - 10_myfile_12345_6789.txt 应该变成 10_myfile_12345_6789 还是 10_myfile_12345_.txt
  • @unclemeat 我试图删除文件扩展名前的四个字符
  • 有许多实用程序,例如 RenameMaster,可以做到这一点。为什么你不能使用其中之一?

标签: windows batch-file filenames rename


【解决方案1】:

根据您最近的澄清 - 我将执行以下操作。

@echo off
setlocal enabledelayedexpansion
set FOLDER_PATH=C:\Some\Path\
for %%f in (%FOLDER_PATH%*) do if %%f neq %~nx0 (
    set "filename=%%~nf"
    ren "%%f" "!filename:~0,-4!%%~xf"
)
PAUSE

这将改变你的例子

10_myfile_12345_6789.txt
11_myfile_12345_0987.txt

进入

10_myfile_12345_.txt
11_myfile_12345_.txt

如果您想删除结尾的_,只需将!filename:~0,-4! 更改为!filename:~0,-5!。这很简单string manipulation

【讨论】:

  • 谢谢你,但是目录名好像改了
  • @XanderVane 我实际上并没有测试我的解决方案——我的错。查看更新版本。在 for 循环中添加了* 以获取目录的内容,而不是目录本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 2014-01-23
  • 2021-11-06
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多