おおむね手間省きという認識で間違いないです。
xcopy試そうと思います…が、zip>Unzipで試してみたものができました。
#packopt name "MAKE ZIP";
//プラグイン
#include "hspext.as";
#include "kernel32.as";
#uselib "ZIP32J.DLL";
#func Zip "Zip" sptr, sptr, var, sptr;
#uselib "unzip32.dll";
#func UnZip "UnZip" nullptr, str, int, int;
#module
#uselib "shell32"
#func global SHFileOperation "SHFileOperationA" int
#deffunc deletefolder str _dir
sdim pFrom, 260
pFrom = _dir
dim SHFILEOPSTRUCT, 8
SHFILEOPSTRUCT.0 = hWnd
SHFILEOPSTRUCT.1 = 0x0003 //FO_DELETE
SHFILEOPSTRUCT.2 = varptr( pFrom )
SHFILEOPSTRUCT.3 = 0
SHFILEOPSTRUCT.4 = 0x0114 // FOF_SIMPLEPROGRESS | FOF_NOCONFIRMATION
SHFileOperation varptr( SHFILEOPSTRUCT )
return stat
#global
//初期化
sdim startname,1024,100;
screen 0,600,600,0,0,0;
font "MSゴシック",12,17;
//info
notesel vc
exist "info.txt"
if strsize!-1{
noteload "info.txt"
noteget b,0
input_path = b
noteget b,1
palette_path = b
noteget b,2
output_path = b
}else{
input_path = dir_cur
palette_path = dir_cur
output_path = dir_desktop
}
//info2
notesel p1
dirlist p1,input_path+"/*",0
files=stat
sdim okng,4,files+1
sdim filename,1024,files
repeat files
noteget b,cnt
filename(cnt)=b
okng(cnt+1)="OK"
loop
//ver
notesel vc
exist "ver.txt"
if strsize!-1{
noteload "ver.txt"
noteget b,0
ver1=int(b)
noteget b,1
ver2=int(b)+1
if ver2=10{ver1+1:ver2=0}
noteget b,2
ver3=int(b)
}else{
ver1=0
ver2=0
ver3=0
}
//
//入力
repeat
stick key
//圧縮するフォルダ選択
//封入するファイルチェック
//バージョンチェック
;ver1=
;ver2=
;ver3=
ver=strf("ver %01.1d.%01.1d.%01.1d",ver1,ver2,ver3)
//画面出力
redraw 0
color 0 ,0 ,0
boxf
color 0 ,255,0
//
pos 10,10
mes ver
pos 10,30
mes "入力元:"+input_path
mes "出力先:"+output_path
//
line 0 ,10+12*4,ginfo_sx,10+12*4
line 300,10+12*4,300 ,ginfo_sy
//
pos 310,20+12*4
mes strf("ALL FILES : %04.4d",files)
repeat files
if mousex<=310+ginfo_sx & mousex>=310 & mousey>=20+12*(6+cnt) & mousey<=20+12*(7+cnt){
color 255,0 ,0
if key&256{if okng(cnt+1)="NG"{okng(cnt+1)="OK"}else{okng(cnt+1)="NG"}}
}else{
color 0 ,255,0
}
pos 310,10+12*(7+cnt)
mes okng(cnt)+" : "+filename(cnt)
loop
//
if mousex<=ginfo_sx/2 & mousex>=10 & mousey>=20+12*4 & mousey<=20+12*5{
color 255,0 ,0
if key&256{gosub*change}
}else{
color 0 ,255,0
}
pos 10,20+12*4
mes "chose"
//
color 64,64,64
boxf 0,ginfo_sy-22,ginfo_sx/2-1,ginfo_sy-10
if mousex<=ginfo_sx/2 & mousex>=10 & mousey>=ginfo_sy-22 & mousey<=ginfo_sy-10{
color 255,0 ,0
if key&256{break}
}else{
color 0 ,255,0
}
pos 10,ginfo_sy-22
mes "go"
//
redraw 1
await 0
loop
//info
notesel vc
noteadd input_path ,0,1
noteadd palette_path,1,1
noteadd output_path ,2,1
notesave "info.txt"
//ver
notesel vc
noteadd str(ver1),0,1
noteadd str(ver2),1,1
noteadd str(ver3),2,1
notesave "ver.txt"
//パレット作成
fles=files
exist ""+dir_cur+"/palette.zip "
if strsize!-1{delete ""+dir_cur+"/palette.zip "}
sdim get
Zip hwnd, "-r palette.zip "+(input_path), get, 1024*1024;
UnZip "\""+dir_cur+"/palette.zip\" \""+dir_cur+"\""
gosub*change2
//必要ファイル抽出
screen 0,600,600,0,0,0;
font "MSゴシック",10,17;
color
mes (files)
repeat files
;if okng(cnt)="NG"{
mes okng(cnt+1)
; }
loop
mes
//出力
//終了
stop
end
*change
selfolder input_path,"ファイルを選択してください"
//info2
notesel p1
dirlist p1,input_path+"/*",0
files=stat
sdim okng,4,files+1
sdim filename,1024,files
repeat files
noteget b,cnt
filename(cnt)=b
okng(cnt+1)="OK"
loop
return
*change2
//info2
notesel p1
dirlist p1,input_path+"/*",0
files=stat
sdim filename,1024,files
repeat files
noteget b,cnt
filename(cnt)=b
loop
return
zip32.dllとZIP32J.dllが必要です
zipを実行後、変数が軒並み変になってしまって…原因は何でしょうか