Knowing the "error" that halted the app would have helped us determine what happened. Seems like you went to a lot of trouble to get this going. WIT took care of it all aside from a few multidisc games and that was a few minutes of fixing time. The ID's are kind of important too...if you are to download covers and such. They are not just to look at
Also, the scrubbing does happen on the copy command, that is correct. But with the switch it wont. I personally like to copy as opposed to move when I am dealing with 800GB of files though, and that switch was the way to do it without scrubbing them.
I've found Advanced Renamer to be perfect for the task of renaming ISOs and moving them into folders. Simply set the options marked in the screenshot and you should be good to go!
There is a utility called Wiimms ISO Tool that can deal with messing with Wii and GC ISO images. I was able to use it to add GameID names, create folders, and move the ISOs to the folders renamed as game.iso with a single command..... once I figured the %$^&@# thing out.
The command I used was: wit COPY *.iso "games\%G [%I]\game.iso"
Which basically means "Create a folder named "games", then inside that create a folder for each iso with it's filename(minus the iso extension at the end), a space, then the GameID in brackets, then copy that iso into that folder while renaming it "game.iso""... I could have just used MOVE instead of COPY but I wanted to have the source files in case something went wrong to try again.
I did have to go in manually and fix up the multidisk games as it would put each disk in it's own folder this way, but there was only a small handful of those, other than that it did the job.... at least, from what I can see of my directory structure it did the job, haven't gotten my new harddrive for these so I can test Nintendon't yet.
wit MOVE --source ./ --DEST "games\%N [%I]\game.iso"
import os
import re
import shutil
total_games = 0
dir = "./"
dirs = os.listdir("./")
wiitdb = open("wiitdb.txt", "r")
for root, dirs, files in os.walk(dir):
if 'games' in dirs:
dirs.remove('games')
for file in files:
if file.endswith(".iso"):
pathfile = os.path.join(root, file)
print("Reading file: "+ pathfile)
f = open(pathfile)
f.seek(0)
header = f.read(7)
gameid = header[:6]
disc_number = ord(header[-1:])
disc_number += 1
print("GameID: "+ gameid + " Disc: "+ str(disc_number))
match = re.search(r'\w+', gameid)
if match:
if not os.path.exists(dir + "games"):
os.makedirs(dir+"games")
with open("wiitdb.txt", encoding='utf-8') as wiitdb:
for line in wiitdb:
m= re.match(gameid+r" = ([\w\W\s]+)", line)
if m:
gamename = m.group(1)
if ":" in gamename:
gamename = gamename.replace(':', ' - ')
if "\n" in gamename:
gamename = gamename.replace ('\n', '')
print("Game title: "+gamename)
newgamepath = dir+"games"+"/"+gamename+" ["+gameid+"]"
if not os.path.exists(newgamepath):
os.makedirs(newgamepath)
print("Copying game...")
shutil.copy(pathfile, newgamepath + "/game.iso")
total_games += 1
if not os.path.exists(newgamepath+"/disc"+ str(disc_number)+".iso") and disc_number > 1:
print("Copying game...")
shutil.copy(pathfile, newgamepath + "/disc"+ str(disc_number) +".iso")
total_games += 1
else:
print("GameID: Invalid!!")
print("====================================")
print("Total games copied: " + str(total_games))
I've created this little python script.
What It does:
How to: place the script and wiitdb.txt in the folder where all your games are
- Verifies iso file is a valid game from wiitdb database
- Copies iso files from current directory and subdirectories to "games" folder. In a 1:1 way. No compression.
- Assigns game title and gameid to destination folder
- Reads disc number, renaming iso file to disc2, instead of game.iso
Get wiitdb.txt from here
Any improvement would be appreciated : )
Code:import os import re import shutil total_games = 0 dir = "./" dirs = os.listdir("./") wiitdb = open("wiitdb.txt", "r") for root, dirs, files in os.walk(dir): if 'games' in dirs: dirs.remove('games') for file in files: if file.endswith(".iso"): pathfile = os.path.join(root, file) print("Reading file: "+ pathfile) f = open(pathfile) f.seek(0) header = f.read(7) gameid = header[:6] disc_number = ord(header[-1:]) disc_number += 1 print("GameID: "+ gameid + " Disc: "+ str(disc_number)) match = re.search(r'\w+', gameid) if match: if not os.path.exists(dir + "games"): os.makedirs(dir+"games") with open("wiitdb.txt", encoding='utf-8') as wiitdb: for line in wiitdb: m= re.match(gameid+r" = ([\w\W\s]+)", line) if m: gamename = m.group(1) if ":" in gamename: gamename = gamename.replace(':', ' - ') if "\n" in gamename: gamename = gamename.replace ('\n', '') print("Game title: "+gamename) newgamepath = dir+"games"+"/"+gamename+" ["+gameid+"]" if not os.path.exists(newgamepath): os.makedirs(newgamepath) print("Copying game...") shutil.copy(pathfile, newgamepath + "/game.iso") total_games += 1 if not os.path.exists(newgamepath+"/disc"+ str(disc_number)+".iso") and disc_number > 1: print("Copying game...") shutil.copy(pathfile, newgamepath + "/disc"+ str(disc_number) +".iso") total_games += 1 else: print("GameID: Invalid!!") print("====================================") print("Total games copied: " + str(total_games))
You must install python, then paste the code into a notepad and save it as script.py in the place where you have all your gamecube iso's, then execute it and wait
I could make it an executable file but would be like 30mb :s
I've created this little python script.
What It does:
How to: place the script and wiitdb.txt in the folder where all your games are
- Verifies iso file is a valid game from wiitdb database
- Copies iso files from current directory and subdirectories to "games" folder. In a 1:1 way. No compression.
- Assigns game title and gameid to destination folder
- Reads disc number, renaming iso file to disc2, instead of game.iso
Get wiitdb.txt from here
Any improvement would be appreciated : )
Code:import os import re import shutil total_games = 0 dir = "./" dirs = os.listdir("./") wiitdb = open("wiitdb.txt", "r") for root, dirs, files in os.walk(dir): if 'games' in dirs: dirs.remove('games') for file in files: if file.endswith(".iso"): pathfile = os.path.join(root, file) print("Reading file: "+ pathfile) f = open(pathfile) f.seek(0) header = f.read(7) gameid = header[:6] disc_number = ord(header[-1:]) disc_number += 1 print("GameID: "+ gameid + " Disc: "+ str(disc_number)) match = re.search(r'\w+', gameid) if match: if not os.path.exists(dir + "games"): os.makedirs(dir+"games") with open("wiitdb.txt", encoding='utf-8') as wiitdb: for line in wiitdb: m= re.match(gameid+r" = ([\w\W\s]+)", line) if m: gamename = m.group(1) if ":" in gamename: gamename = gamename.replace(':', ' - ') if "\n" in gamename: gamename = gamename.replace ('\n', '') print("Game title: "+gamename) newgamepath = dir+"games"+"/"+gamename+" ["+gameid+"]" if not os.path.exists(newgamepath): os.makedirs(newgamepath) print("Copying game...") shutil.copy(pathfile, newgamepath + "/game.iso") total_games += 1 if not os.path.exists(newgamepath+"/disc"+ str(disc_number)+".iso") and disc_number > 1: print("Copying game...") shutil.copy(pathfile, newgamepath + "/disc"+ str(disc_number) +".iso") total_games += 1 else: print("GameID: Invalid!!") print("====================================") print("Total games copied: " + str(total_games))
I have a utility I've been working on that does that if you'd like to test it. Send me a PM if you're interested and I will send it to you. It is only for Windows and you'll need the .NET Framework 4.5 installed.