[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 请教关于文件名删除字符问题

本帖最后由 webnet 于 2016-12-29 18:31 编辑

新手求助:
我有一个这样的文件名,ABC(2016-12 29).txt
现在想更改为ABC20161228.txt

我在
http://shawnshi.blog.51cto.com/1749677/335205
找到了“替换文件名中的指定字符串”的方法,但是每次只能替换一类字符,有什么方法可以直接一次全部替换,并且把日期修改为前一天呢?
1.替换文件名中的指定字符串:
Get-ChildItem C:\Users\shichng\Desktop\test2 -Force -Recurse  | rename-item -newname { $_.name -replace 'microsoft','' } –force
将所有文件名中的microsoft删除

另外,更改后,有办法能把这个文件自动压缩成.tar.gz的压缩文件吗?

本帖最后由 pcl_test 于 2016-12-31 10:25 编辑
  1. $basename='ABC(2016-12 29)'
  2. $newbasename=[regex]::Replace($basename, '\(([^(]+)\)$', {param($m);([DateTime]$m.groups[1].value).AddDays(-1).ToString('yyyMMdd')})
  3. $newbasename
复制代码
7-zip命令行将文件压缩打包成.tar.gz格式
  1. 7z.exe a -ttar "test.tar" "test.txt"
  2. 7z.exe a -tgzip "test.tar.gz" "test.tar"
复制代码

TOP

本帖最后由 DiamondbacK 于 2016-12-29 22:44 编辑
  1. Get-ChildItem | Where-Object { $_.Name -match '(.*)\(((?:20|19)\d\d-[01]\d [0-3]\d)\)(.*)' } |
  2.   Rename-Item -NewName `
  3.     { $Matches[1] + ('{00:yyyyMMdd}' -f (Get-Date $Matches[2]).AddDays(-1)) + $Matches[3] }
复制代码
.tar 包用 tar 程序打包。
.gz 用 gzip 程序压缩。

TOP

感谢两位大咖的代码,亲测可用。就是还不太明白个别参数的用法,需要接着学习。

TOP

返回列表