批处理文件重命名(删除时间戳)

时间:2014-10-21 22:23:19

标签: windows file batch-file cmd rename

我做了一些研究,但没有找到,我发现我无法开展工作。这是我在stackoverflow上找到的一件事。 cmd - batch file rename - Stack Overflow

我使用大炮复印机将文件扫描到网络驱动器上的文件夹中。我在扫描文件之前命名文件,复印机在文件末尾放置一个时间戳,看起来像“_20141021165008”,我想删除文件发送到计算机时的时间戳。文件被扫描到三个位置之一,我希望他们每个人都做同样的事情。

这就是来自复印机的样子:

001-Bob_(1-100)_20141021165008
002-Bob_(1-25)_20141021170515
1-67676_Ex.Sheets_20141021172043

这就是我希望它们的样子:

001-Bob_(1-100)
002-Bob_(1-25)
1-67676_Ex.Sheets

此外,名称和数字一直在变化。 我有它,以便文件扩展名不可见。但这些文件占99.9%的时间.PDF

我想做的是:

  • 当文件到达文件夹时自动删除时间戳。
  • 不要多次重命名文件,这样我就不会丢失任何文件名。

我有一个批处理文件,删除文件名的最后12个字符,我创建了一个快捷方式,并使用键盘快捷方式,但它不适用于所有,不完全自动化,我必须重置每隔几天就有一个快捷方式,因为它只是停止工作......

运行Win7 Pro 64x

感谢任何有帮助的人!

3 个答案:

答案 0 :(得分:2)

几乎,但不完全是你所要求的。并且可以根据需要多次运行该命令,而无需更改已重命名文件的名称。

ren *_*.pdf *_.pdf

上述命令将使用您在问题中列出的文件提供以下结果:

001-Bob_(1-100)_20141021165008.pdf    -->  001-Bob_(1-100)_.pdf
002-Bob_(1-25)_20141021170515.pdf     -->  002-Bob_(1-25)_.pdf
1-67676_Ex.Sheets_20141021172043.pdf  -->  1-67676_Ex.Sheets_.pdf

请参阅How does the Windows RENAME command interpret wildcards?,了解上述命令的工作原理。

答案 1 :(得分:0)

for /f "tokens=1-3* delims=_" %A in ('dir /b *_*_*.*') do ren "%A_%B_%C%D" "%A_%B%D"

这将读取dir命令的输出。它不适用于具有两个以下下划线的文件。如果你需要那就这么说。在批处理文件中,将%A等更改为%% A。

答案 2 :(得分:0)

@echo off

setlocal
set "target_folder=c:\some_dir"
pushd "%target_folder%" 2>nul

rem  --Remove comments in case of network drive.
rem net use h: %target_folder%
rem pushd h:

setlocal enableDelayedExpansion
for %%a in (*_2014*) do (
    set filename=%%~na
    set newname=!filename:~0,-14!
    rem --Remove the echo if the new file name is OK
    echo ren "%%~nxa" "!newname!%%~xa"

)
endlocal
endlocal