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

[问题求助] PowerShell怎样重命名前先备份所有文件的原始文件名?

大家好!
我想给当前文件夹下的所有文件重命名, 但重命名软件一旦执行,即使改错了也改不回来了, 不知道哪个是哪个了
所以我想在重命名前, 先执行一下PS脚本A.bat, 它能生成一个当前所有文件原始文件名的PS脚本B.bat,执行该脚本可以还原所有原始的文件名,
难点在于:得想办法找到文件名和文件某个属性的对应关系

这个很有趣, 用ps脚本生成另一个ps脚本
请求路过高手支招, 多谢
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

可以根据文件 "Md5" "SHA1" “CRC32”  “base64” 对应备份一个列表
因为这些是唯一的 剩下的就比效率了

TOP

回复 2# terse

多谢大侠支招, 这些md5什么的, 得要借助第三方工具吧, 自带属性什么的无解吗/
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 3# 5i365

PowerShell 可以

TOP

是要这样的吗
  1. fsutil file queryfileid a.txt
复制代码

TOP

本帖最后由 5i365 于 2023-2-6 18:06 编辑

回复 5# idwma


多谢大侠, 不懂这个命令怎么用
假设咱们要写的脚本是A.bat, 执行此脚本后, 会生成另一个脚本B.bat, 然后我随便改脚本文件目录下的文件的名字(包含子目录), 我想全部反悔时, 就执行B.bat 然后我所有的更改的名字全还原了
今天在坛里看到一个命名软件叫拖把命名器, 它能预览改名后的效果, 挺不错, 但上面的功能, 感觉也很有趣
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 6# 5i365


文件id改名不会变呀,和md5的用法一样

TOP

本帖最后由 pd1 于 2023-2-7 18:15 编辑

保存为A.bat后运行,会生成一个B.bat和hash.bat(这个就是保存的一个hash表),然后你运行你的改名,最后运行B.bat恢复试试。
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. $bat=@'
  7. <# :
  8. @echo off
  9. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  10. pause
  11. #>
  12. $ss=ConvertFrom-Json -InputObject (Get-Content .\hash.bat)
  13. dir -s|Where-Object{$_.Extension -ne ".bat" -and $_ -is [System.IO.FileInfo]}|ForEach-Object{$h=(Get-FileHash -Path $_.FullName -Algorithm MD5).hash;ren $_.FullName $ss.$h.Replace((Split-Path $ss.$h).ToString()+"\","")}
  14. '@
  15. $bat|Out-File -Append -Encoding default -FilePath B.bat
  16. $s="{"
  17. dir -s|Where-Object{$_.Extension -ne ".bat" -and $_ -is [System.IO.FileInfo]}|ForEach-Object{$s+='"'+(Get-FileHash -Path $_.FUllName -Algorithm MD5).hash+'":"'+$_.FullName.replace("\", "\\")+'",'}
  18. $s=$s.Substring(0,$s.Length-1)+"}"
  19. $s|Out-File -Append -FilePath hash.bat
复制代码

TOP

返回列表