批量更改文件名的后半部分,但不更改扩展名

时间:2012-09-04 04:34:48

标签: batch-file command timestamp

我正在尝试在batch script的扩展名之前重命名文件的后半部分。
例如:

block1.txt --> block1-%mydate%-%mytime%.txt

block2.zip --> block2-%mydate%-%mytime%.txt

文件名以%1的形式传递给程序。每次运行只会更改一个文件名。该程序旨在以MMDDYYYY-HHMM.

的形式在文件末尾附加时间戳。

程序的第一部分产生表达式%mydate%-%mytime%

我不能为我的生活找到如何以一般和一贯的功能方式做到这一点。

任何帮助?

2 个答案:

答案 0 :(得分:1)

对于Windows @hobodave 回答了类似的question

对于命令行

for /F %i in ("c:\foo\bar.txt") do @echo %~ni

输出:bar

适用于.bat文件

set FILE=bar
for /F %%i in ("%FILE%") do @echo %%~ni

输出:bar

进一步阅读:

http://www.computerhope.com/forhlp.htm

对于Unix

您可以使用 basename 命令。它将清除特定路径的路径和扩展。

basename /foo/bar/arch.zip .zip

将输出

arch

基本名称手册:http://unixhelp.ed.ac.uk/CGI/man-cgi?basename

答案 1 :(得分:1)

您的意思是: FileName-MMDDYYYY-HHSS。*

for /f "tokens=2-7 delims=/:. " %%a in ("%date% %time: =0%") do set newFileName=%~n1-%%a%%b%%c-%%d%%f%~x1
ren "%~1" "%newFileName%"

或者您的意思是: FileName-MMDDYYYY-HHMM。*

for /f "tokens=2-6 delims=/:. " %%a in ("%date% %time: =0%") do set newFileName=%~n1-%%a%%b%%c-%%d%%e%~x1
ren "%~1" "%newFileName%"