找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19065|回复: 3

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

[复制链接]
发表于 2016-12-29 18:28:56 | 显示全部楼层 |阅读模式
本帖最后由 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的压缩文件吗?
发表于 2016-12-29 22:32:00 | 显示全部楼层
本帖最后由 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"
复制代码
发表于 2016-12-29 22:35:50 | 显示全部楼层
本帖最后由 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 程序压缩。
 楼主| 发表于 2016-12-30 11:14:56 | 显示全部楼层
感谢两位大咖的代码,亲测可用。就是还不太明白个别参数的用法,需要接着学习。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:29 , Processed in 0.017569 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表