Unix版本的Windows touch命令从文件名部分修改文件的修改date

我有这个bash脚本循环通过当前目录中的文件 ,并从文件名中提取date部分 ,然后使用(Unix) touch命令修改(或更新)该文件的修改datemtime )到该date。

文件名示例

Electric company name - bill - 2014-03-22.pdf

Bash脚本:

我将这个bash脚本保存为_save_file_mtime_from_filename.sh (将chmod +x添加到该脚本中)并放入要更改文件修改时间的目录中。 然后从命令行运行它。

 #!/bin/bash CURRENT_DIR=$(dirname $_) cd $CURRENT_DIR for f in * do # Strip the file extension d=${f%.*} # Strip the last 10 characters d=${d:${#d}-10} # Check the format / mask if [[ $d = ????-??-?? ]] ; then # Strip the dash d=${d//-} # Run `touch` on the file with the extracted date format # and add `0000` to the file date touch -t ${d}0000 "$f" fi done 

现在我正在寻找这个脚本Windows版本

我searchnetworking(和Stackoverflow)。 发现了一些相关的问题,如https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command和https://superuser.com/questions/251470/windows-recursive-touch-command / 251507#251507

有没有人有任何想法的Windows版本使用_save_file_mtime_from_filename.bat可执行版本,基本上是一样的事情?

通过一个(Mac)Automator动作的小小的调整和帮助,保存为一个“应用程序”,甚至可以在Mac Finder中右键点击这个脚本( https://discussions.apple.com/thread/ 5287944?start = 15&tstart = 0 )。 甜!

Solutions Collecting From Web of "Unix版本的Windows touch命令从文件名部分修改文件的修改date"

安装Cygwin ,或从GnuWin32或UnixUtils安装二进制文件

我同意@konsolebox。 只要安装Cygwin ,你就可以在不改变的情况下运行你的脚本。

但是,如果你不想走这条路,你应该可以从GnuWin32安装“coreutils”。 Coreutils包含“touch”等等。 不过,写一个DOS批处理文件来模拟上面写的东西可能会有点痛苦。 对我来说很棘手的部分是[[ $d = ????-??-?? ]] [[ $d = ????-??-?? ]] 。 你将不得不做一些创意来匹配,也许使用grep,你可以从同一页面获得。 现在你正在安装一些东西,然后做很多工作。 安装Cygwin会更容易。