Board logo

标题: [问题求助] bat的代码能转成ps1么 [打印本页]

作者: sykIII    时间: 2019-11-11 13:08     标题: bat的代码能转成ps1么

bat限制太多了,想试试powershell
  1. @echo off
  2. :loop
  3. if "%~1"=="" goto :done
  4. if not exist "%~1\*.ico" goto :err
  5. del "%~1\desktop.ini" /f /q /ah 1>nul 2>nul
  6. set "dir=%~1"
  7. pushd "%dir%"
  8. for /f "delims=" %%a in ('dir /a-d/b *.ico') do set "icon=%%~nxa"
  9. (echo [.ShellClassInfo]
  10. echo IconResource=%icon%
  11. echo [ViewState]
  12. echo Mode=
  13. echo Vid=
  14. echo FolderType=Pictures
  15. )>"%dir%\desktop.ini"
  16. attrib +s +h "%dir%\desktop.ini"
  17. attrib +s +h "%icon%"
  18. attrib +r /d "%dir%"
  19. popd
  20. goto :next
  21. :err
  22. echo;找不到文件 - %~nx1
  23. :next
  24. shift
  25. goto :loop
  26. :done
  27. echo;
  28. pause
复制代码

作者: ivor    时间: 2019-11-11 16:45

本帖最后由 ivor 于 2019-11-11 16:55 编辑
  1. function err {
  2.     param (
  3.         [string]$file
  4.     )
  5.     "找不到文件 - {0}" -f $file
  6. }
  7. foreach ($arg in $args) {
  8.     if (![System.IO.File]::Exists($arg.ToString()+"\*.ico")) {
  9.         err(([System.IO.FileInfo]$arg.ToString()).Name)
  10.         continue
  11.     }
  12.     Remove-Item $arg+"\desktop.ini" -Force
  13.     $dir = $arg
  14.     Push-Location $arg
  15.     foreach ($item in (Get-ChildItem -File *.ico)) {
  16.         $icon = $item.Name
  17.     }
  18.     '[.ShellClassInfo]
  19.         IconResource={0}
  20.         [ViewState]
  21.         Mode=
  22.         Vid=
  23.         FolderType=Pictures
  24.     ' -f $icon | Out-File -FilePath $dir+"\desktop.ini"
  25.     attrib +s +h $dir+"\desktop.ini"
  26.     attrib +s +h "%icon%"
  27.     attrib +r /d $dir
  28.     Pop-Location
  29. }
复制代码





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