1

MSDOSまたはVBSを介してスクリプト/バッチ実行可能ファイルを作成する方法を知りたいのですが、これは次のようになります。

Movies 」というフォルダが1つあります。このフォルダには、「 jpg、gif、png、srt、sub、avi、mp4、mkv 」のようなファイルを含むいくつかのサブフォルダがあります。

私が必要なのは:

0.)ディレクトリがいっぱいまたは空の' jpg、gif、png、srt、sub、avi、mp4、mkv 'を除く他のすべてのファイルは、ゴミ箱に移動するか、削除する必要があります。

1.)次に、すべてのサブフォルダーの下に「字幕」という新しいフォルダーを作成する必要があります。

2.)次に、すべてのサブフォルダーの下で「jpg、gif、png」ファイルの名前を「ポスター1」、「ポスター2」、「ポスター3」などに変更します...(拡張子は変更されません)。

3.)次に、「srt、sub」ファイルを作成した「Subtitles」フォルダに移動する必要があります。

4.)次に、ムービーファイル名に従って、「srt、sub」ファイルと、ムービーファイルを含むフォルダ自体の名前を変更します。ムービーファイルの拡張子は「avi、mp4、mkv」です。

5.)この実行可能ファイルは、「Movies」フォルダから実行する必要があります。可能であれば、画面に結果を出力することもできます(何が行われたかを確認するため)。

したがって、基本的にフォルダ「Movie」の下には、たとえばフォルダ「Pain(2011)」があり、「Poster 1.jpg」、「Poster 2.jpg」、「Poster?.jpg 」ファイルには「 Subtitles」というサブフォルダが含まれます。ここで、「Pain(2011).srt」ファイルが作成され、少なくともフォルダ自体の名前とサブタイトルファイルは、ムービーファイル「Pain(2011).avi」にちなんで名付けられます。もちろん、他のすべてのファイルはゴミ箱に移動されるか、削除されます。

すべてのアイデアは大歓迎です!

ありがとうございました!

訴える


出力:


何かキーを押すと続行します 。。。
ファイル「monsieur_lazhar_.jpg」の名前を「
Poster1.jpg」に変更ファイル「monsieur_lazhar__ver2.jpg」の名前を「Poster2.jpg」に変更
ファイル「Poster1.jpg」の名前を「Poster3.jpg」に変更
任意のキーを押して続行します。。。


///フォルダには2つのjpgファイルしかなく、そのうちの1つは2回名前が変更されています

4

1 に答える 1

0
@echo off
setlocal EnableDelayedExpansion

set wantedExt=.jpg.gif.png.srt.sub.avi.mp4.mkv

rem I have one folder called 'Movies'
rem This executable file has to be run from the 'Movies' folder
cd /D "%~DP0"
echo BASE FOLDER: %cd%
rem in this folder are several sub-folders with files
set n=0
for /D %%a in (*) do (
   set /A n+=1
   cd "%%a"
   echo ==================================================================
   echo Processing folder: %%a

   rem 0.) Every other file except of 'jpg,gif,png,srt,sub,avi,mp4,mkv' must be moved to trash or deleted.
   for %%b in (*.*) do (
      if "!wantedExt:%%~Xb=!" equ "%wantedExt%" ECHO del "%%b" & echo File deleted: %%b
   )

   rem 0.5.) delete all folders before the 'Subtitles' folder is created
   for /D %%b in (*) do rd /S /Q "%%b"

   rem 1.) Then I need to create under every sub-folder a new folder called 'Subtitles'.
   ECHO md Subtitles
   echo Subtitles folder created

   rem 2.) Then to rename under every sub-folder 'jpg,gif,png' file to 'Poster 1', 'Poster 2', 'Poster 3' and so on... (no change on extension).
   set i=0
   for %%b in (*.jpg *.gif *.png) do (
      set /A i+=1
      ECHO ren "%%b" "Poster !i!%%~Xb"
      echo File "%%b" renamed to "Poster !i!%%~Xb"
   )
   rem PATCH to fix a bug in previous FOR command:
   if !i! neq 0 if not exist "Poster 1.*" (
      ren "Poster !i!.*" "Poster 1.*"
      echo ...and renamed back to "Poster 1"
   )

   rem 3.) Then I need to move the 'srt,sub' file in to the created 'Subtitles' folder.
   rem 4.) ... (to rename the 'srt,sub' file ... according the movie file name)
   rem The movie file can have extension: 'avi,mp4,mkv'.
   for %%b in (*.avi *.mp4 *.mkv) do set movieName=%%~Nb
   echo Movie name: !movieName!
   for %%b in (*.srt *.sub) do (
      ECHO move "%%b" "Subtitles\!movieName!%%~Xb"
      echo File "%%b" moved and renamed to "Subtitles\!movieName!%%~Xb"
   )

   rem 4.) ... (to rename the folder itself which contains the movie file, according the movie file name)
   cd ..
   ECHO ren "%%a" "!movieName!"
   echo Folder "%%a" renamed to "!movieName!"

)
echo ==================================================================
echo %n% FOLDERS PROCESSED
pause
于 2012-12-02T05:09:38.787 に答える