我正在尝试在batch script
的扩展名之前重命名文件的后半部分。
例如:
block1.txt --> block1-%mydate%-%mytime%.txt
block2.zip --> block2-%mydate%-%mytime%.txt
文件名以%1
的形式传递给程序。每次运行只会更改一个文件名。该程序旨在以MMDDYYYY-HHMM.
程序的第一部分产生表达式%mydate%-%mytime%
。
我不能为我的生活找到如何以一般和一贯的功能方式做到这一点。
任何帮助?
答案 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
答案 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%"