Board logo

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

作者: 5i365    时间: 2023-2-2 08:39     标题: PowerShell怎样重命名前先备份所有文件的原始文件名?

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

这个很有趣, 用ps脚本生成另一个ps脚本
请求路过高手支招, 多谢
作者: terse    时间: 2023-2-2 13:45

可以根据文件 "Md5" "SHA1" “CRC32”  “base64” 对应备份一个列表
因为这些是唯一的 剩下的就比效率了
作者: 5i365    时间: 2023-2-2 15:37

回复 2# terse

多谢大侠支招, 这些md5什么的, 得要借助第三方工具吧, 自带属性什么的无解吗/
作者: terse    时间: 2023-2-2 16:46

回复 3# 5i365

PowerShell 可以
作者: idwma    时间: 2023-2-6 14:36

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

作者: 5i365    时间: 2023-2-6 18:02

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

回复 5# idwma


多谢大侠, 不懂这个命令怎么用
假设咱们要写的脚本是A.bat, 执行此脚本后, 会生成另一个脚本B.bat, 然后我随便改脚本文件目录下的文件的名字(包含子目录), 我想全部反悔时, 就执行B.bat 然后我所有的更改的名字全还原了
今天在坛里看到一个命名软件叫拖把命名器, 它能预览改名后的效果, 挺不错, 但上面的功能, 感觉也很有趣
作者: idwma    时间: 2023-2-7 12:41

回复 6# 5i365


文件id改名不会变呀,和md5的用法一样
作者: pd1    时间: 2023-2-7 17:46

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





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