anomaly简易模组管理器
解压的模组文件夹需要和游戏本体在同一个硬盘分区下,硬盘分区NTFS格式,遍历模组,建立到gamedata的硬链接。
建立硬链接需要管理员权限,所以使用管理员运行BAT文件。
import os import argparse def make_dir_link(src_path,dest_path,sym): if(not os.path.exists(src_path)): print("src_path do not exits: "+src_path) return 0 for dir_cur, dirs, files in os.walk(src_path, topdown=False, onerror=None, followlinks=True): for dir_name in dirs: src_dir_abs_path = os.path.join(dir_cur, dir_name) src_dir_rel_path = os.path.relpath(src_dir_abs_path, src_path) dst_dir_abs_path = os.path.join(dest_path, src_dir_rel_path) if(not os.path.exists(dst_dir_abs_path)): try: os.makedirs(dst_dir_abs_path) except IOError as e: print(os.strerror(e.errno) + "\n") return 0 for dir_cur, dirs, files in os.walk(src_path, topdown=False, onerror=None, followlinks=True): for file_name in files: src_file_abs_path = os.path.join(dir_cur, file_name) src_file_rel_path = os.path.relpath(src_file_abs_path, src_path) dst_file_abs_path = os.path.join(dest_path, src_file_rel_path) if(os.path.exists(dst_file_abs_path)): #print(src_path+":\n removing "+dst_file_abs_path) try: os.remove(dst_file_abs_path) except IOError as e: print(os.strerror(e.errno) + ":\n"+"when remove "+ dst_file_abs_path) return 0 if(not os.path.exists(dst_file_abs_path)): if sym: try: os.chdir(os.path.dirname(dst_file_abs_path)) os.symlink(src_file_abs_path,file_name) except IOError as e: print(os.strerror(e.errno) + "\n"+"when symlink "+ dst_file_abs_path) return 0 else: try: os.chdir(os.path.dirname(dst_file_abs_path)) os.link(src_file_abs_path,file_name) except IOError as e: print(os.strerror(e.errno) + "\n"+"when hardlink "+ dst_file_abs_path) return 0 if(not os.path.exists(dst_file_abs_path)): print("link "+dst_file_abs_path+" failed") return 1 if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('src_path',type=str,default=None) parser.add_argument('dest_path',type=str,default=None) parser.add_argument('sym',type=str,default="False") args = parser.parse_args() #print(args.filename, args.count, args.verbose) #print(str(args)) #print(args.src_path) sym = False if(args.sym != "False"): sym = True #print("src_path="+args.src_path+",dest_path="+args.dest_path+",sym="+str(sym)) make_dir_link(args.src_path, args.dest_path,sym)
BAT文件中包含文件的硬链接列表。
@echo off set xmklink=D:\games\Anomaly\tools\update_gamedata\xmklink.py set game_root=D:\games\Anomaly set gamedata=%game_root%\gamedata set db_addons=%game_root%\db\addons set db_mods=%game_root%\db\mods set repo=%game_root%\repo set use_sym_link=False echo gamedata=%gamedata% copy "%gamedata%\configs\axr_options.ltx" %temp% rmdir %gamedata% /s /q mkdir %gamedata% rmdir %db_addons% /s /q mkdir %db_addons% rmdir %db_mods% /s /q mkdir %db_mods% ::echo .zip > %temp%\1.txt ::echo .rar >> %temp%\1.txt ::echo .7z >> %temp%\1.txt ::xcopy /EXCLUDE:%temp%\1.txt "F:\游戏\S.T.A.L.K.E.R\S.T.A.L.K.E.R. - Call of Pripyat\anomaly\addons" "D:\games\Anomaly\repo\addons\" /D /E ::xcopy /EXCLUDE:%temp%\1.txt "F:\游戏\S.T.A.L.K.E.R\S.T.A.L.K.E.R. - Call of Pripyat\anomaly\addons_cjh" "D:\games\Anomaly\repo\addons_cjh\" /D /E ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons\Classic_Textures_1.5.1.4\db\addons" %db_addons% %use_sym_link% %xmklink% "%repo%\addons\Classic_Textures_1.5.1.4\(Optional) Classic Foliage\db\addons" %db_addons% %use_sym_link% %xmklink% "%repo%\addons\Classic_Textures_1.5.1.4\(Optional) Classic Grass\db\addons" %db_addons% %use_sym_link% %xmklink% "%repo%\addons\Classic_Textures_1.5.1.4\(Optional) Classic Terrain\db\addons" %db_addons% %use_sym_link% %xmklink% "%repo%\addons\Dx8_lighting\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Fixed damage chemical anomaly fix for DX8\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Smooth Campfire by Mr White\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Sky black line begone\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\x3_Performance_tweaks.2\Performance - A LIFE\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\x3_Performance_tweaks.2\Performance - Crowded areas\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\x3_Performance_tweaks.2\Performance - More fog\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\x3_Performance_tweaks.2\Performance - More fog - even less vision distance\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Anomaly_Sky_Bloom_Fix.1\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Michiko's Weather Revamp 3.0\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Dynamic Tonemap Extended\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\POTAUTUMN_Performance_Textures_Weather_0.3\POTAUTUMN Performance Weather\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\POTAUTUMN_Performance_Textures_Weather_0.3\POTAUTUMN Performance Textures\db" %db% %use_sym_link% ::%xmklink% "%repo%\addons\too_bright_too_dark\gamedata" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons\001. Boomsticks and Sharpsticks 02-Oct-2022\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\BaS_Performance_Textures\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Only BaS weapons\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Retrogues_Additional_Weapons\00 Main\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Retrogues_Additional_Weapons\03 Mag Redux Patch\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_HAMR_last_update\DLTX_HAMR_Weapon pack\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_HAMR_last_update\DLTX HAMR EXTRA (requires main weapon pack)\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_Hamr_fix\DLTX_HAMR_last_update (Ultra Fix)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\saiga_12s_drum.7\1. Core\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Saiga_12s_drum Magsredux_patch + icon fix + text fix\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Anomaly_See_Through_Scopes_ALPHA_1.3\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\MagsRedux.2023.08.04\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\MagsRedux.2023.08.04\bas_patch\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Anomaly Reticles\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\FNX-Dot\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons_cjh\DX8 SCOPES\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_2D_Scope_Overhaul_A004.1.2\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_2D_Scope_Overhaul_A004.1.2\patches\___DX8-9 Support\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_Scopes_as_Binoculars_v1.3\[DLTX] Scopes as Binoculars v1.3\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DLTX_Scopes_as_Binoculars_v1.3\[DLTX] Scopes as Binoculars v1.3 BaS Patch\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Weapon Icon Replacement\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Knife-Binoc-pistol\gamedata" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons\Anomaly-Mod-Configuration-Menu1.6.5.7\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\reputation_edit.2\gamedata" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons\Crafting Info in Tooltips\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Price always in item tooltip-v1.1.5\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Parts In Tooltip\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Tooltip Control\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\New_descr_0.3\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Larger parts condition text-v1.1.2\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\1.2.2_Crooks_Faction_Identification_UI\00. Crook's Faction Identification UI\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\DisplayCampfiresOnMap-v1.2\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Dialog Dynamic UI\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\BodyDotsMiniMap.1\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HUD_icons_time_0\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\00 Main\00.0 Main (For All)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\00 Main\00.2 Second Main (Anomaly)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.0.2 Faction Design (RoH)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.1.1 Solid Stat Bars (Flat)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.3.2 New Main Menu Style (Anomaly)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.3.2.1 New Main Menu Style (Anomaly + MCM)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.4.1 Horizontal Weapon Cells (Alternate Style)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.8 Alternate Inventory Cell Blockers\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\01 Styles\01.9.1 Inventory Cells Without Labels (Horizontal)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\02 Patches\02.1 Patch Hunger Thirst Sleepiness Bars - xcvb (Anomaly)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\UI Rework G.A.M.M.A. Style v1.3.6\02 Patches\02.1.1 Patch HTS Power Bars (Anomaly)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\ZVER_HUD_Compact_Update_1.1\ZVER HUD Compact (Standart)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\NPC center health bar\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Damage_Numbers.5\Damage Numbers\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\changed color of minor task markers\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\track_compatible_items-1.0.2\02 Basic with MCM support\gamedata" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons\Reworked_RF_Receiver_v1.4\core\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Less Eardrum-Blasting RF Receiver\sweet silence\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\bizarre_interference_v10.1\BI V11\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Catspaw_New_Extensible_RF_Sources-1.3\00 Main Install (Required)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Catspaw_New_Extensible_RF_Sources-1.3\02 Non-DLTX version (Required - Pick ONLY One)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Catspaw_New_Extensible_RF_Sources-1.3\03 Patch for Bizarre Interference addon\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Catspaw_Anomalous_RF_Signals_1.2\00 Main Install (Required)\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Catspaw_Anomalous_RF_Signals_1.2\01 DLTX version (Pick ONLY One)\gamedata" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons\item_cooking script 1.5.2 fix\item_cooking script 1.5.2 fix\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\1.5.1-1.5.2_Banjajis_Field_workshop_v3.2\v3.2\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\StalkersDropMoreAmmo.4\x3\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\new_game_export_0.3\new_game_export_0.3\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\00 Main\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\00 Main\01 Creative Mode\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\001 Dependencies\ahuyn\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\001 Dependencies\arm\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\10 Nomad Module\11 Stash Containers\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\10 Nomad Module\12 Portable Lights\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\30 Fortress Module\31 Weapon Displays\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\40 Homestead Module\41 Portable Workshop\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\90 Addons\91 Stash Capacities\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\HideoutFurniture-v2.2.1\90 Addons\92 WTF Integration\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HaruFillableCanteens-2.0.1\Main\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HaruFillableCanteens-2.0.1\Roasting\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\HaruFillableCanteens-2.0.1\Water Pumps\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Mechanics can repair weapon parts\MCRWP Base\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Draggable Hud Editor\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Bags_visuals\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Anomaly_Popup_Messages.2.3\Anomaly Popup Messages\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Anomaly_Popup_Messages.2.3\APM - Items Gained\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Anomaly_Popup_Messages.2.3\APM - Kill Feed\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\Anomaly_Popup_Messages.2.3\APM - Reputation\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Flashlight_Fixed_Firepoint.1\DLTX\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\item-properties-redone-v2\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\SortingPlus.34\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\Eco_exo_fix\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\experimental_ old and new ammo merge\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons\PeachsItemIcons.4\Minimal Item Icons\gamedata" %gamedata% %use_sym_link% ::%xmklink% "%repo%\addons\DynamicIconIndicators-1.0.1\00 Main" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\addons_cjh\Inventory Weights Revised\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\SquareDOV.8\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\minimap_drain\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\drop_cfg\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\cooking_item_more_use\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\weapon_propeties\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\mech_do_not_need_upgrade_tool\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\upgrade_icon\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\UIrework_brighter_background\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\SaveGameName\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\less_noweapon_sound\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\bas_trade_inject\gamedata" %gamedata% %use_sym_link% %xmklink% "%repo%\addons_cjh\barrel_change\gamedata" %gamedata% %use_sym_link% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: %xmklink% "%repo%\exe\STALKER-Anomaly-modded-exes_2023.10.17\gamedata" %gamedata% %use_sym_link% copy "%temp%\axr_options.ltx" "%gamedata%\configs" date /T time /T pause
链接:https://pan.baidu.com/s/1N_hEa6zLIBeo208vs5mEXA?pwd=dqkk 提取码:dqkk
                    
                
                
            
        
浙公网安备 33010602011771号