2014-10-21 117 views
2

我已经做了一些研究,没有找到很多,我发现我无法工作。这里有一件我在这里找到的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 

而且,姓名和电话号码更改所有的时间。 我有这样的文件扩展名不可见。但这些文件的时间.PDF

99.9%,我想这样做的是:当文件夹中到达

  • 有无时间戳自动删除。
  • 不会多次重命名一个文件,这样我就不会丢失任何文件名。

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

运行Win7的临64倍

谢谢你对任何人有帮助!

回答

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?

+0

“ren”的这种行为记录在哪里? – 2014-10-22 04:29:35

+0

+1。新闻给我,所以我显然需要审查当前的命令集。 – 2014-10-22 04:31:14

+0

@ Cheersandhth.-Alf - 查看已更新答案中的链接。据我所知,这种行为没有被MicroSoft正确记录。我跑了一堆实验来反向设计行为。 – dbenham 2014-10-22 12:23:22

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

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

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