0

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

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

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

文件名作为%1. 每次运行只会更改一个文件名。该程序旨在将时间戳附加到文件的末尾,形式为MMDDYYYY-HHMM.

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

我一生都无法弄清楚如何以通用且始终如一的功能方式进行操作。

有什么帮助吗?

4

2 回答 2

1

对于 Windows@hobodave对类似问题的回答如下:

对于命令行

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

Basename 手册:http ://unixhelp.ed.ac.uk/CGI/man-cgi?basename

于 2012-09-04T04:54:04.947 回答
1

您的意思是:文件名-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%"

还是您的意思是:文件名-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%"
于 2012-09-04T06:11:21.263 回答