Board logo

标题: [问题求助] 请教关于文件名删除字符问题 [打印本页]

作者: webnet    时间: 2016-12-29 18:28     标题: 请教关于文件名删除字符问题

本帖最后由 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-29 22:32

本帖最后由 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"
复制代码

作者: DiamondbacK    时间: 2016-12-29 22:35

本帖最后由 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 程序压缩。
作者: webnet    时间: 2016-12-30 11:14

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




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2