このバッチ ファイルは Windows 10 を損傷したり、起動を妨げたりする可能性がありますか?

このバッチ ファイルは Windows 10 を損傷したり、起動を妨げたりする可能性がありますか?

以下の.batスクリプトには、Windows 10 システム ファイルを削除/破損し、起動を妨げてブート ループを引き起こす可能性のあるものはありますか? 再起動後、 の実行後.bat、Windows は起動せず、次のように表示されますCritical Service Failed

  • 私は.batフラッシュドライブから、そしてから管理者として を実行しC:、ファイル名がないフラッシュドライブが処理中でしたが、怪しいものでした。
    takeown /f "H:\PVR" /r
    icacls "H:\PVR" /reset /t
    
    for /r "H:\PVR" %%i in (*.ts *.tsv) do move "%%i" "H:\PVR"
    
    cd /d "H:\PVR"
    ren *.tsv *.ts
    
    for /f "delims=" %%d in ('dir /ad /b') do @rd /q /s "%%d"
    setlocal EnableDelayedExpansion
    
    for %%a in (*.ts *.tsv) do (
      set name=%%~Na
      set num=00!random!
      set newName=!!name:~-17!
      ren "%%a" "!newName!%%~Xa"
    )
    
    私は、DVBT-T2 受信機からのフラッシュ ドライブ上の録画を処理するために、ここや他の場所で見つかったいくつかのコマンドを組み合わせてこのスクリプトを作成しました.ts。その目的は、次のとおりです。
    1. H:\PVRおよびそのすべての内容の許可を得る
    2. .tsv録音をサブフォルダから移動し、サブフォルダを削除します
    3. .tsv拡張機能の名前を変更する.ts
    4. ファイル名の最初の17文字を削除します。レシーバーのプレフィックス形式が気に入らないからです。

これをトラブルシューティングするにはどうすればいいですか?

答え1

...その後、CMD ウィンドウが開き、フラッシュ ドライブにないファイル名が処理されているのを確認しましたが、これは怪しいものでした...

  1. 次の場所に移動しますH::

    cd /d H:\
    

  2. もしcd /d H:\が非 を返す場合0、オペレーターは の後の次のコマンドを実行し||、バッチ スクリプトをファイル [ ] の末尾に移動させてgoto :eOf、他のフォルダー/ファイルへのアクションなしで実行を終了します。

    cd /d H:\ || goto :eOf
    

  3. 最後のコマンドが正常に返された場合、以下のコマンドtakeownが実行されます:icaclsH:

    %__AppDir__%takeown.exe /f H:\PVR\. /r
    %__AppDir__%icacls.exe H:\PVR\. /reset /t
    

    のためにtakeownそしてicalsコマンドを実行する場合は、一時停止して画面を確認してください。

    :: # One space before  ^  and no space and/or another character after  ^  :
       %__AppDir__%takeown.exe /f .\PVR\. /r | <nul ^
       %__AppDir__%Findstr.exe "(or.*):" & %__AppDir__%timeout.exe /t -1
    
       %__AppDir__%icacls.exe .\PVR\. /reset /t |  <nul ^
       %__AppDir__%Find.exe "files; Fai" & %__AppDir__%timeout.exe /t -1
    

    タイムアウトを削除するには:

    %__AppDir__%takeown.exe /f .\PVR\. /r && %__AppDir__%icacls.exe .\PVR\. /reset /t
    

  4. [ Sort] フォルダ/ツリーを逆モード [ /r] で一覧表示して、ディレクトリ ツリー内の最後のサブフォルダ/ディレクトリを取得し、可能な場合はファイルを移動して現在のディレクトリを削除します。

    for /f usebacktokens^=* %i in (`dir /b /s /ad-h H:\PVR\.^|%__AppDir__%Sort.exe /r
    
    $ Dir /b /s /ad-h D:\PVR|%__AppDir__%Sort.exe /r
    
      H:\PVR\tmp
      H:\PVR\Dir 003\tmp
      H:\PVR\Dir 003
      H:\PVR\Dir 002\tmp
      H:\PVR\Dir 002
      H:\PVR\Dir 001\tmp
      H:\PVR\Dir 001
      H:\PVR\Dir 000\tmp
      H:\PVR\Dir 000
    

  5. ループ内の各フォルダに対して、および内のファイル*.ts?に適用してファイルを移動します。エラーが発生しない場合は(ファイル/フォルダが使用中など)、フォルダを削除し、そうでない場合はファイルの名前を変更します: ( → )*.ts*.tsv\PVR\..\PVR\*.tsv*.ts

    move "%%~fi\*.ts?" H:\PVR\ && rd "%%~fi" && rename H:\PVR\*.tsv *.ts
    
    move "%%~fi\*.ts?" H:\PVR\ if return 0 do:
      rd "%%~fi" &&  if return 0 do:
        rename H:\PVR\*.tsv *.ts

    他にはないと思う*.tsフォルダ内のファイルがあり、このフォルダ [ @rd /q /s "%%d"] を削除する必要がある場合、そうでない場合は、最後の行を次のように置き換えます。

    for /f usebacktokens^=* %%i in (`Dir /b /s /ad-h H:\PVR^|%__AppDir__%Sort.exe /r
      `)do ( move "%%~fi\*.tsv" D:\PVR\. && move "%%~fi\*.ts" H:\PVR\.
      ) && ( rmDir /s /q "%%~fi" && rename D:\PVR\*.tsv *.ts )
    

  6. 同じ行で新しく定義された変数を使用して実行時に値を取得するには、を呼び出しますcmd /v /c !Newly defined variable!。これは、ファイル名の長さを最大17文字に制限することでファイル名を変更するために行われていることです。!_new:~-17!(最後の17文字と同じ)

    set "_new=%%~ni" && in the same line use: cmd.exe /v:on /c rename "%%~fi" "!_new:~-17!%%~xi"
    • where私の個人的な好みは、ファイルの完全なパスを簡単に返すためにを使用することです。 とは異なりdir /b、小文字の文字列は表示されません。
      for /f useback^tokens^=* %%i in (`2^>nul %__AppDir__%where.exe "H:\PVR":"*.ts*"
      `)do set "_new=%%~ni" && cmd.exe /v:on /c rename "%%~fi" "!_new:~-17!%%~xi"
      
    • 私はuseback(略してusebackq)ファイル名/パスに特殊文字が含まれている場合、予期しない動作を回避するために、投稿されていない文字列/レイアウトがファイル名を構成します。



ファイルの移動/名前変更を処理するには:

@echo off

cd /d H:\.. || goto :eof
setlocal Enabledelayedexpansion

%__AppDir__%takeown.exe /f .\PVR\. /r | <nul ^
  %__AppDir__%Findstr.exe "(or.*):" & %__AppDir__%timeout.exe /t -1

%__AppDir__%icacls.exe .\PVR\. /reset /t |  <nul ^
  %__AppDir__%Find.exe "files;.Fa" & %__AppDir__%timeout.exe /t -01

for /f usebacktokens^=* %%i in (`Dir /b /s /ad-h H:\PVR^|%__AppDir__%Sort.exe /r
  `)do move "%%~fi\*.ts?" H:\PVR\ && rd "%%~fi" && rename H:\PVR\*.tsv *.ts

for /f useback^tokens^=* %%i in (`2^>nul %__AppDir__%where.exe "H:\PVR":"*.ts*"
  `)do set "_new=%%~ni" && cmd.exe /v:on /c rename "%%~fi" "!_new:~-17!%%~xi"

endlocal & %__AppDir__%timeout.exe /t -1 | echo\iS dONE! & goto :eof || exit /b
  • 出力:
      H:\PVR\tmp\F0HZCERYIEYKY--U0O69.ts
      H:\PVR\tmp\4-W5N0-6QDOWYAS-YYW-.ts
      H:\PVR\tmp\-PD2MDWHFIL5VP0DWCN8.tsv
      H:\PVR\tmp\SZAAC--91GQCH7OD9-0P.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\tmpi" Moved: tmp\*.ts?
    
      H:\PVR\Dir 000\tmp\I9aKTe38uRqcmkh2B7GF.ts
      H:\PVR\Dir 000\tmp\BBPcfN7R9jg1ESsgHsnA.ts
      H:\PVR\Dir 000\tmp\FRAEKeG1HnMZTmBpY6CB.tsv
      H:\PVR\Dir 000\tmp\EHuI3OiwSRGZWg7fsxsT.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 000\tmpi" Moved: tmp\*.ts?
    
      H:\PVR\Dir 001\tmp\HZH4jcvj2GvQzf7og5h3.ts
      H:\PVR\Dir 001\tmp\EHRR1jKp3owr4lIsZZre.ts
      H:\PVR\Dir 001\tmp\1c0sB7o881uCGiYZUnvh.tsv
      H:\PVR\Dir 001\tmp\PnDUHnrCAGeUB3RRnwF5.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 001\tmpi" Moved: tmp\*.ts?
    
      H:\PVR\Dir 002\tmp\nqRuQhA9WrXvPk7i2ywt.ts
      H:\PVR\Dir 002\tmp\7b4hGoKaA9HxiSXtbpAT.ts
      H:\PVR\Dir 002\tmp\Y6PbfweT6aSgDiDDCVdU.tsv
      H:\PVR\Dir 002\tmp\qvnIDtkY7uKtfcgStHzq.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 002\tmpi" Moved: tmp\*.ts?
    
      H:\PVR\Dir 003\tmp\wnAVPzdos4RWjrJTt9cr.ts
      H:\PVR\Dir 003\tmp\EXDlfbAqCyfB23l7ZZHz.ts
      H:\PVR\Dir 003\tmp\lgAduikvz4vlF1PWA892.tsv
      H:\PVR\Dir 003\tmp\JcBmygrENpU4kEOOIFqP.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 003\tmpi" Moved: tmp\*.ts?
    
      H:\PVR\Dir 000\SvRxVxF6ZDr7a8R5F9z5.ts
      H:\PVR\Dir 000\1tZDpWwpCVNqrxwr993C.ts
      H:\PVR\Dir 000\BXKSG8q0vo3bXCgaNr7K.tsv
      H:\PVR\Dir 000\qtPe80WQRRrms1Iga1i3.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 000i" Moved: Dir 000\*.ts?
    
      H:\PVR\Dir 001\NXGbTP1AlPxJGRPWaUJx.ts
      H:\PVR\Dir 001\Q2Eq97QpY7XQ7reWjUMi.ts
      H:\PVR\Dir 001\UEAkSw76WV9j0494Lpvv.tsv
      H:\PVR\Dir 001\IFBoWCY483HQE94fpCHU.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 001i" Moved: Dir 001\*.ts?
    
      H:\PVR\Dir 002\4nSfuQtqqOF6rPrs9TKb.ts
      H:\PVR\Dir 002\iNEIDXVdvKkN7abkFZJj.ts
      H:\PVR\Dir 002\ygWGThdkefADZpMKWq30.tsv
      H:\PVR\Dir 002\GLLcbLS8QZngJSDfM9k4.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 002i" Moved: Dir 002\*.ts?
    
      H:\PVR\Dir 003\i1wW84pUm5TEGCWTueFw.ts
      H:\PVR\Dir 003\N7s3dLHI5QzdrkGZJJju.ts
      H:\PVR\Dir 003\T1lQu7bcvmQepdh8iVzp.tsv
      H:\PVR\Dir 003\izNYHYHzFf4moJZPcOJv.tsv
        4 file(s) moved.
    
    Removed: "H:\PVR\Dir 003i" Moved: Dir 003\*.ts?
    
$ where /r .\PVR *.*

  H:\PVR\YHYHzFf4moJZPcOJv.ts
  H:\PVR\I51RPV68L-6MKLEHV.ts
  H:\PVR\-IE2WZ5MGZ0NOYAC8.ts
  H:\PVR\MYVS0GIQKLSZ99-PI.ts
  H:\PVR\1WMI4-W-0DH2C9V9O.ts
  H:\PVR\ZCERYIEYKY--U0O69.ts
  H:\PVR\5N0-6QDOWYAS-YYW-.ts
  H:\PVR\2MDWHFIL5VP0DWCN8.ts
  H:\PVR\AC--91GQCH7OD9-0P.ts
  H:\PVR\KTe38uRqcmkh2B7GF.ts
  H:\PVR\cfN7R9jg1ESsgHsnA.ts
  H:\PVR\EKeG1HnMZTmBpY6CB.ts
  H:\PVR\I3OiwSRGZWg7fsxsT.ts
  H:\PVR\4jcvj2GvQzf7og5h3.ts
  H:\PVR\R1jKp3owr4lIsZZre.ts
  H:\PVR\sB7o881uCGiYZUnvh.ts
  H:\PVR\UHnrCAGeUB3RRnwF5.ts
  H:\PVR\uQhA9WrXvPk7i2ywt.ts
  H:\PVR\hGoKaA9HxiSXtbpAT.ts
  H:\PVR\bfweT6aSgDiDDCVdU.ts
  H:\PVR\IDtkY7uKtfcgStHzq.ts
  H:\PVR\VPzdos4RWjrJTt9cr.ts
  H:\PVR\lfbAqCyfB23l7ZZHz.ts
  H:\PVR\duikvz4vlF1PWA892.ts
  H:\PVR\mygrENpU4kEOOIFqP.ts
  H:\PVR\xVxF6ZDr7a8R5F9z5.ts
  H:\PVR\DpWwpCVNqrxwr993C.ts
  H:\PVR\SG8q0vo3bXCgaNr7K.ts
  H:\PVR\e80WQRRrms1Iga1i3.ts
  H:\PVR\bTP1AlPxJGRPWaUJx.ts
  H:\PVR\q97QpY7XQ7reWjUMi.ts
  H:\PVR\kSw76WV9j0494Lpvv.ts
  H:\PVR\oWCY483HQE94fpCHU.ts
  H:\PVR\fuQtqqOF6rPrs9TKb.ts
  H:\PVR\IDXVdvKkN7abkFZJj.ts
  H:\PVR\GThdkefADZpMKWq30.ts
  H:\PVR\cbLS8QZngJSDfM9k4.ts
  H:\PVR\W84pUm5TEGCWTueFw.ts
  H:\PVR\3dLHI5QzdrkGZJJju.ts
  H:\PVR\Qu7bcvmQepdh8iVzp.ts
    is done!


上記のコードのテスト シナリオを再現するには、無料のフラッシュ ドライブを入手し、対応するドライブ文字を置き換えます。

@echo off

cd /d H:\.. || goto :eof
setlocal Enabledelayedexpansion

  :: #  create folder for sample/test...

    :: #  H:\
    :: #  \---PVR
    :: #    +---tmp
    :: #    +---Dir 000
    :: #    |  \---tmp
    :: #    +---Dir 001
    :: #    |  \---tmp
    :: #    +---Dir 002
    :: #    |  \---tmp
    :: #    \---Dir 003
    :: #    |  \---tmp

:: # make folders ".\PVR\tmp\." and ".\PVR\Dir 000\tmp\."
  mkdir ".\PVR\tmp\."   ".\PVR\Dir 000\tmp\."

:: # make folders ".\PVR\Dir 001\tmp\." and ".\PVR\Dir 002\tmp\." and ".\PVR\Dir 003\tmp\."
  mkdir ".\PVR\Dir 001\tmp\."   ".\PVR\Dir 002\tmp\."   ".\PVR\Dir 003\tmp\."

  :: # Dir /b /s /ad-h /o-d outputs:
  :: # H:\PVR
  :: # H:\PVR\tmp
  :: # H:\PVR\Dir 000
  :: # H:\PVR\Dir 001
  :: # H:\PVR\Dir 002
  :: # H:\PVR\Dir 003
  :: # H:\PVR\Dir 000\tmp
  :: # H:\PVR\Dir 001\tmp
  :: # H:\PVR\Dir 002\tmp
  :: # H:\PVR\Dir 003\tmp

:: # Show folder the tree/dir created above and list folders
  %__AppDir__%tree.com /a /f .
  %__AppDir__%Timeout.exe  -1 | dir /b /s /ad-h /o-d

echo\UD5I51RPV68L-6MKLEHV.ts >".\PVR\UD5I51RPV68L-6MKLEHV.ts"
echo\5F5-IE2WZ5MGZ0NOYAC8.ts >".\PVR\5F5-IE2WZ5MGZ0NOYAC8.ts"
echo\UY6MYVS0GIQKLSZ99-PI.tsv >".\PVR\UY6MYVS0GIQKLSZ99-PI.tsv"
echo\QA01WMI4-W-0DH2C9V9O.tsv >".\PVR\QA01WMI4-W-0DH2C9V9O.tsv"

echo\F0HZCERYIEYKY--U0O69.ts >".\PVR\tmp\F0HZCERYIEYKY--U0O69.ts"
echo\4-W5N0-6QDOWYAS-YYW-.ts >".\PVR\tmp\4-W5N0-6QDOWYAS-YYW-.ts"
echo\-PD2MDWHFIL5VP0DWCN8.tsv >".\PVR\tmp\-PD2MDWHFIL5VP0DWCN8.tsv"
echo\SZAAC--91GQCH7OD9-0P.tsv >".\PVR\tmp\SZAAC--91GQCH7OD9-0P.tsv"

echo\SvRxVxF6ZDr7a8R5F9z5.ts >".\PVR\Dir 000\SvRxVxF6ZDr7a8R5F9z5.ts"
echo\1tZDpWwpCVNqrxwr993C.ts >".\PVR\Dir 000\1tZDpWwpCVNqrxwr993C.ts"
echo\BXKSG8q0vo3bXCgaNr7K.tsv >".\PVR\Dir 000\BXKSG8q0vo3bXCgaNr7K.tsv"
echo\qtPe80WQRRrms1Iga1i3.tsv >".\PVR\Dir 000\qtPe80WQRRrms1Iga1i3.tsv"

echo\I9aKTe38uRqcmkh2B7GF.ts >".\PVR\Dir 000\tmp\I9aKTe38uRqcmkh2B7GF.ts"
echo\BBPcfN7R9jg1ESsgHsnA.ts >".\PVR\Dir 000\tmp\BBPcfN7R9jg1ESsgHsnA.ts"
echo\FRAEKeG1HnMZTmBpY6CB.tsv >".\PVR\Dir 000\tmp\FRAEKeG1HnMZTmBpY6CB.tsv"
echo\EHuI3OiwSRGZWg7fsxsT.tsv >".\PVR\Dir 000\tmp\EHuI3OiwSRGZWg7fsxsT.tsv"

echo\NXGbTP1AlPxJGRPWaUJx.ts >".\PVR\Dir 001\NXGbTP1AlPxJGRPWaUJx.ts"
echo\Q2Eq97QpY7XQ7reWjUMi.ts >".\PVR\Dir 001\Q2Eq97QpY7XQ7reWjUMi.ts"
echo\UEAkSw76WV9j0494Lpvv.tsv >".\PVR\Dir 001\UEAkSw76WV9j0494Lpvv.tsv"
echo\IFBoWCY483HQE94fpCHU.tsv >".\PVR\Dir 001\IFBoWCY483HQE94fpCHU.tsv"

echo\HZH4jcvj2GvQzf7og5h3.ts >".\PVR\Dir 001\tmp\HZH4jcvj2GvQzf7og5h3.ts"
echo\EHRR1jKp3owr4lIsZZre.ts >".\PVR\Dir 001\tmp\EHRR1jKp3owr4lIsZZre.ts"
echo\1c0sB7o881uCGiYZUnvh.ts >".\PVR\Dir 001\tmp\1c0sB7o881uCGiYZUnvh.tsv"
echo\PnDUHnrCAGeUB3RRnwF5.tsv >".\PVR\Dir 001\tmp\PnDUHnrCAGeUB3RRnwF5.tsv"

echo\4nSfuQtqqOF6rPrs9TKb.tv >".\PVR\Dir 002\4nSfuQtqqOF6rPrs9TKb.ts"
echo\iNEIDXVdvKkN7abkFZJj.tv >".\PVR\Dir 002\iNEIDXVdvKkN7abkFZJj.ts"
echo\ygWGThdkefADZpMKWq30.tsv >".\PVR\Dir 002\ygWGThdkefADZpMKWq30.tsv"
echo\GLLcbLS8QZngJSDfM9k4.tsv >".\PVR\Dir 002\GLLcbLS8QZngJSDfM9k4.tsv"

echo\nqRuQhA9WrXvPk7i2ywt.ts >".\PVR\Dir 002\tmp\nqRuQhA9WrXvPk7i2ywt.ts"
echo\7b4hGoKaA9HxiSXtbpAT.ts >".\PVR\Dir 002\tmp\7b4hGoKaA9HxiSXtbpAT.ts"
echo\Y6PbfweT6aSgDiDDCVdU.tsv >".\PVR\Dir 002\tmp\Y6PbfweT6aSgDiDDCVdU.tsv"
echo\qvnIDtkY7uKtfcgStHzq.tsv >".\PVR\Dir 002\tmp\qvnIDtkY7uKtfcgStHzq.tsv"

echo\i1wW84pUm5TEGCWTueFw.ts >".\PVR\Dir 003\i1wW84pUm5TEGCWTueFw.ts"
echo\N7s3dLHI5QzdrkGZJJju.ts >".\PVR\Dir 003\N7s3dLHI5QzdrkGZJJju.ts"
echo\T1lQu7bcvmQepdh8iVzp.tsv >".\PVR\Dir 003\T1lQu7bcvmQepdh8iVzp.tsv"
echo\izNYHYHzFf4moJZPcOJv.tsv >".\PVR\Dir 003\izNYHYHzFf4moJZPcOJv.tsv"

echo\wnAVPzdos4RWjrJTt9cr.ts >".\PVR\Dir 003\tmp\wnAVPzdos4RWjrJTt9cr.ts"
echo\EXDlfbAqCyfB23l7ZZHz.ts >".\PVR\Dir 003\tmp\EXDlfbAqCyfB23l7ZZHz.ts"
echo\lgAduikvz4vlF1PWA892.tsv >".\PVR\Dir 003\tmp\lgAduikvz4vlF1PWA892.tsv"
echo\JcBmygrENpU4kEOOIFqP.tsv >".\PVR\Dir 003\tmp\JcBmygrENpU4kEOOIFqP.tsv"

:: # put a copy from outputs [tree]+[dir] into the clipboard and exit
  (dir /b /s /ad-h /o-d & %__AppDir__%tree.com /a /f . ) | %__AppDir__%clip.exe

endlocal & goto :eof


追加リソース:

関連情報