opendatasicilia / tansignari

"T'ansignari e t'appeddiri"
http://tansignari.opendatasicilia.it
Creative Commons Attribution 4.0 International
18 stars 10 forks source link

[batch] ciclo FOR usando valori dentro un file #238

Closed pigreco closed 1 year ago

pigreco commented 1 year ago

Devo fare un ciclo FOR usando i dati presenti in questo file (allegato sotto), ma avviando lo script non accade nulla, non ho messaggi di errore e non capisco cosa sbaglio.

@echo off

rem jq -r ".domains|keys[]" dbgt10k_fc_domain.json >lista_domains.txt

FOR /F %%i "delims=" IN (lista_domains.txt) DO (
jq -r ".domains.%%i.codedValues" dbgt10k_fc_domain.json | mlr --j2c reshape -r "." -o k,v >out2/%%i.csv
echo %%i
)
pause>null

lista_domains.txt

https://www.facebook.com/pigreco314/posts/pfbid024fq9A9fhM7QxDPVuWyVrqzGe19c4zLdfDjzT9QVpW63SgqHa9burAJFNnvDht9xgl

pigreco commented 1 year ago

Se i valori presenti nel file li esplicitassi direttamente nel ciclo for, allora funziona tutto, ecco esempio funzionante:

@echo off

FOR %%d IN (D_AATT_Tipo D_AB_CDA_Livello D_AB_CDA_Sede D_AB_CDA_Tipo_sponda D_ACC_PC_Tipo D_AC_CIC_Livello D_AC_CIC_Posizione D_AC_PED_Livello D_AC_PED_Posizione D_AC_PED_Zona D_AC_VEI_Livello D_AF_ACQ_Tipo D_ALBERO_Tipo D_ALVEO_A_Sede D_ALVEO_A_Tipo_di_acqua D_ALVEO_Regime D_ALVEO_Tipo_di_acqua D_ARGINE_Classificazione_ufficiale D_ARGINE_Tipo D_ARGINE_Zona D_AR_MAR_Tipo D_AR_STR_Classifica_tecnico_funzionale D_AR_STR_Livello D_AR_STR_Stato D_AR_VMS_Livello D_AR_VMS_Sede D_AT_NAV_Tipo D_A_PVEG_Cause D_A_TRAS_Tipo_area D_BI_IND_Tipo D_BOSCO_Densita D_BOSCO_Forma_di_governo D_BRK_LN_Categoria D_CAPOSD_Qualificatore D_CONDOT_Categoria_di_condotta D_CONDOT_Livello D_CONDOT_Sede D_CONDOT_Tipo_tracciato D_CV_AES_Zone D_CV_LIV_Attendibilita_certa D_CV_LIV_Determinazione D_CV_LIV_Tipo D_CV_LIV_Visibilita D_DIGA_Classificazione_ufficiale D_DIGA_Tipo_estrusione D_DIGA_Zona D_DRE_SUP_Tipo D_EDIFC_Stato D_EDIFC_Tipo_di_porzione D_EDI_MIN_Stato D_EDI_MIN_Tipologia_edilizia D_ELE_CP_Tipo_di_copertura D_ELE_CP_Tipo_estrusione D_EL_ACQ_Tipo_infrastruttura D_EL_ACQ_Tipo_mobilita D_EL_ACQ_Tipo_via_acqua D_EL_CIC_Livello D_EL_CIC_Posizione D_EL_CIC_Sede D_EL_DIV_Tipo D_EL_FER_Elettrificazione D_EL_FER_Livello D_EL_FER_Posizione D_EL_FER_Scartamento D_EL_FER_Stato D_EL_FER_Tipo D_EL_FER_Tipo_trazione D_EL_FNE_Stato D_EL_FNE_Tipo D_EL_FUN_Livello D_EL_FUN_Sede D_EL_FUN_Stato D_EL_FUN_Tipo_trazione D_EL_IDR_Livello D_EL_IDR_Natura D_EL_IDR_Sede_pensile D_EL_IDR_Stato_alveo D_EL_IDR_Tipo_di_elemento_idrico D_EL_MET_Livello D_EL_MET_Sede D_EL_MET_Stato D_EL_STR_Classe_di_larghezza D_EL_STR_Classifica_tecnico_funzionale D_EL_STR_Livello D_EL_STR_Stato D_EL_TRV_Livello D_EL_TRV_Posizione D_EL_TRV_Sede D_EL_TRV_Stato D_EL_VMS_Livello D_EL_VMS_Sede D_ES_AMM_Classifica_amministrativa D_ES_AMM_Classifica_tecnico_funzionale D_ES_AMM_Proprietario D_FIL_AL_Funzione D_FIL_AL_Tipo D_FOR_PC_Sovrapposizione D_GALLER_Galler_ty D_GALLER_Uso D_GHI_NV_Tipo D_GZ_CIC_Tipo D_GZ_FER_Tipo D_GZ_FUN_Tipo D_GZ_MET_Tipo D_GZ_STR_Tipo D_GZ_TRV_Tipo D_GZ_VMS_Tipo D_INVASO_Tipo_di_acqua D_INVASO_Tipo_sponda D_LIM_COM_Tipo_limite D_LOC_SG_Significativita D_Lingua D_MAN_TR_Tipo D_META_Scala D_META_Tipo_di_estensione D_MN_CON_Sede D_MN_CON_Tipo D_MN_IND_Sotterraneo D_MN_MAU_Tipo D_ND_GAS_Tipo D_ND_IDR_Tipo_di_nodo_idrico D_ND_OLE_Tipo D_OP_REG_Affiorante D_PAR_AR_Tipo_particolare D_PONTE_Coperto D_PONTE_Livello D_PONTE_Materiale D_PONTE_Tipo D_PONTE_Uso D_PONTE_Vie D_PT_QUO_Tipo_di_acquisizione D_SCR_CR_Denominatore_scala D_SCR_CR_Utilizzo D_SC_DIS_Tipo_area D_SD_FER_Livello D_SD_FER_Tipo_di_trasporto_su_ferro D_SED_AMM_Ente D_SED_AMM_Tipo D_SP_ACQ_Tipo D_SP_ACQ_Tipo_di_acqua D_SP_ACQ_Tipo_sponda D_SV_AER_Tipo D_SV_AER_Uso D_SV_ATR_Tipo D_SV_FER_Funzione D_SV_FER_Tipo_infrastruttura_su_ferro D_SV_POR_Porto D_SV_POR_Uso D_TP_STR_Tipo_toponimo D_TRALIC_Impianto D_TR_AAC_Tipo D_TR_ELE_Tipo D_TR_OLE_Tipo D_TR_SAC_Tipo D_TR_SAC_Tipo_di_fognatura D_Tipo D_UN_VOL_Tipo_di_porzione D_UN_VOL_Tipo_estrusione D_V_RETE_Qualificatore D_ZONA_R_Scala_nominale H_AC_CIC_Fondo H_AC_CIC_Sede H_AC_PED_Fondo H_AC_PED_Sede H_AC_VEI_Fondo H_AC_VEI_Sede H_AC_VEI_Zona H_AR_STR_Sede H_AR_VMS_Tipo H_AR_VRD_Tipo H_ATTR_SP_Tipo H_BOSCO_Essenze H_BOSCO_Tipo H_CL_AGR_Tipo H_CS_MAR_Tipo H_CV_AES_Tipo H_DIGA_Tipologia H_EDIFC_Categoria_uso H_EDIFC_Tipologia_edilizia H_EL_CIC_Fondo H_EL_FER_Sede H_EL_STR_Fondo H_EL_STR_Sede H_EL_STR_Tipo H_EL_VMS_Tipo H_FOR_PC_Tipo H_F_NTER_Tipo H_INVASO_Tipo H_LN_BTM_Determinazione H_LOC_SG_Tipo H_MN_ARR_Categoria H_MN_IND_Tipo H_MN_INT_Categoria H_MU_DIV_Tipo H_MU_SOS_Tipo H_ND_AAC_Tipo H_ND_COM_Tipo H_ND_ELE_Tipo H_ND_SAC_Tipo H_OP_POR_Tipo H_OP_REG_Tipo H_PALO_Impianto H_PE_UINS_Tipo H_PONTE_Struttura H_PS_INC_Tipo H_PT_BTM_Determinazione H_PT_QUO_Sede H_SCARPT_Contorno H_SD_FER_Fondo H_SD_FER_Sede H_SV_STR_Tipo H_TRALIC_Tipo_traliccio H_TR_GAS_Tipo) DO (
jq.exe -r ".domains.%%d.codedValues" dbgt10k_fc_domain.json | mlr --j2c reshape -r "." -o k,v >out/%%d.csv
echo %%d
)
pause>null
pigreco commented 1 year ago

Per chi volesse fare dei test, allego una cartella zippata che crea l'ambiente che utilizzo sotto win:

  1. unzippare la cartella sotto c:\
  2. avviare il file SDKShell.bat che è la shell con tutto pronto all'uso (compreso GDAL, Miller e jq)

https://mega.nz/file/1E5CGTQS#j6r2JT-S5ELOEju7XqOFJLfqNgA6Xtxnv8rZMvNWMRw

pigreco commented 1 year ago

Problema risolto, duplice errore:

  1. l'ordine dei parametri è importante e quindi va scritto: FOR /F "delims=" %%i IN
  2. occorre creare la cartella di output prima di lanciare lo script, la cartella out2 non esistiva.
pigreco commented 1 year ago

questo funziona (dopo aver creato la cartella out2):

@echo off

rem jq -r ".domains|keys[]" dbgt10k_fc_domain.json >lista_domains.txt

FOR /F  "delims=" %%i IN (lista_domains.txt) DO (
jq -r ".domains.%%i.codedValues" dbgt10k_fc_domain.json | mlr --j2c reshape -r "." -o k,v >out2/%%i.csv
echo %%i
)
pause>null
agiudiceandrea commented 1 year ago

Per referenza: https://ss64.com/nt/for_f.html