December 7, 200916 yr Hi, I have quite a large collection of Movies & TV Shows that I originally stored in .iso format. For one reason or another I now want to revert to folders with .vobs etc. Is there a way I can unrar/unpack the .iso on the server? At the mo' I've been copying the .iso files to a local machine, using winrar to unpack them before sending back to the server :'( ...I know you can mount an .iso but I was hoping for a way to do a batch at a time. Thanks for any help on offer!
December 7, 200916 yr I have a windows script that does just what you are asking. I'll post it when I get home this afternoon.
December 7, 200916 yr Its certainly not pretty, but it works very well for me. Download MagicISO (http://www.magiciso.com/tutorials/miso-magicdisc-overview.htm) and TeraCopy (http://www.codesector.com/files/teracopy.exe). You could just use xcopy or robocopy, but I like TeraCopy. You can download the two attachments or Create a file called _RUN.BAT and copy the following to it: @echo off rem Location of ISO files set ISOPATH=\\tower\ISO rem Makes sure there are no virtual DVDs running miso NULL -sdrv 0 rem Enables one virtual DVD drive miso NULL -sdrv 1 rem Ensures that virtual DVD drive is always same letter. In this case it is Q: For /F "tokens=4 delims=(,) " %%a in ('miso NULL -vlist^|find "[1]"') do Set VCD=%%a @ECHO select volume %VCD% > %TEMP%\ChangeCDDrive.txt @ECHO assign letter=Q >> %TEMP%\ChangeCDDrive.txt @ECHO exit >> %TEMP%\ChangeCDDrive.txt Diskpart /S %TEMP%\ChangeCDDrive.txt Del %TEMP%\ChangeCDDrive.txt /Q rem Launches a seperate window that displays all your .ISO's so you can copy and paste cmd /c start dir /b %ISOPATH%\*.iso rem Add all the ISOs you copied in the previous step to the dvd.txt file, save and close. NOTEPAD.EXE dvds.txt rem Starts the copy for /F "tokens=1,2 delims=," %%d in (dvds.txt) do call extractISO.bat %%d %%e rem Disables the virtual DVD drive miso NULL -sdrv 0 Create a file called extractISO.BAT and copy the following to it: rem Set variables set LABEL= set DVDDRIVE=Q set ISOPATH=\\tower\ISO set MOVIESPATH=\\tower\movies rem Mount DVD ISO in virtual drive miso NULL -mnt %DVDDRIVE%: "%ISOPATH%\%1" rem Retrieve DVD volume label for /f "tokens=5*" %%l in ('2^>nul vol %DVDDRIVE%:^|find /v /i "Volume Serial Number is"^|find /v /i "has no label"') do set LABEL=%%m rem Create directory for movie md "%MOVIESPATH%\%LABEL%" rem Copy movie with TeraCopy "C:\Program Files\TeraCopy\teracopy.exe" Copy %DVDDRIVE%: "%MOVIESPATH%\%LABEL%" rem Unmount ISO from Virtual drive miso NULL -umnt %DVDDRIVE%: rem Five second pause before continuing in case unmounting takes a few seconds ping localhost -n 5 >nul Place these files in a folder. Edit _RUN.BAT to set the path to your ISO files. Edit extractISO.bat to set the path to your ISO files and the path to your Movies directory (e.g. \\tower\movies). Double-click _RUN.BAT, copy the listing (or a portion of...this is why I just dont list the whole dir to the text file) of .ISO to the DVD.TXT file, save and exit. It will then loop through. In my environment, it takes 2-4 minutes per DVD. Once that completes, I run My Movies against that share to update all the covers/metadata. I hope you find this useful. If anyone wants to clean this up, have at it!
December 8, 200916 yr Author Nice one! Thanks a lot for this. I will give it a whirl when I get back later.
December 9, 200916 yr Hi, I have quite a large collection of Movies & TV Shows that I originally stored in .iso format. For one reason or another I now want to revert to folders with .vobs etc. Is there a way I can unrar/unpack the .iso on the server? At the mo' I've been copying the .iso files to a local machine, using winrar to unpack them before sending back to the server :'( ...I know you can mount an .iso but I was hoping for a way to do a batch at a time. Thanks for any help on offer! Here is a quick one (tested): [ $# -ne 2 ] && { echo "Usage: `basename $0` <input dir> <output dir>"; exit 1; } INPUT_DIR="$1" OUTPUT_DIR="$2" [ -d "$OUTPUT_DIR" ] || mkdir -p "$OUTPUT_DIR" LOOPBACK_MNT_DIR=/mnt/tmp [ -d "$LOOPBACK_MNT_DIR" ] || mkdir -p "$LOOPBACK_MNT_DIR" IFS=' ' for i in `find "$INPUT_DIR" -type f -iname '*.iso'` do mount -o loop -t iso9660 "$i" "$LOOPBACK_MNT_DIR" OUTPUT_DIR_VOB="${OUTPUT_DIR}/$(basename "$i" .iso)" [ -d "$OUTPUT_DIR_VOB" ] || mkdir -p "$OUTPUT_DIR_VOB" cp -ax "$LOOPBACK_MNT_DIR"/. "$OUTPUT_DIR_VOB" || echo "Failed to copy $i" && \ echo "$i successfully copied under $OUTPUT_DIR_VOB" umount "$LOOPBACK_MNT_DIR" done rmdir "$LOOPBACK_MNT_DIR"
December 9, 200916 yr Sorry, just realized Linux mount converts all named to lower case. I don't know how to work around this problem, except rename them after the copying. Attached is the final version that will do the renaming.
Archived
This topic is now archived and is closed to further replies.