Closed pigreco closed 1 year ago
In batch:
type lista_layer.txt
che equivale al cat lista_layer.txt
in bashlista
si utilizza set lista=type lista_layer.txt
%lista%
se utilizzo questi concetti:
ogr2ogr -f "OpenFileGDB" -progress x_Andy_only_Polygon_pesanti.gdb "D:\GitHub\ESRI_FileGeodatabase_GDAL\dati\DBGT_10K_22_V01.gdb" %lista% -lco FEATURE_DATASET=sardegna
errore:
Ciao @pigreco, in bash hai tanti modi per raccogliere dati da un file esterno e renderli disponibili in uno script.
Uno semplice è questo. Immagina di avere il file lista.txt
, che contiene lorem ipsum
.
Crea uno script bash e usa una variabile per raccoglierne il contenuto in questo modo
lista=$(<./lista.txt)
A questo punto nello script esplodi la variabile lì dove ti serve
echo "Nell lista ci sono i valori: $lista"
E tu potrai mettere il tuo $lista
laddove ti serve. Ricordandoti che la devi fare esplodere, degli eventuali escape, ecc..
Qui sotto uno script ciao mondo.
#!/bin/bash
lista=$(<./lista.txt)
echo "Nella lista ci sono i valori: $lista"
Grazie @aborruso
farò ulteriori test, ma sottolineo che sono su batch
e non su bash
farò ulteriori test, ma sottolineo che sono su
batch
e non subash
Ok, leggevo il subject e pensavo che non avessi vincoli di ambiente. Mi spiace
utilizzando quanto spiegato in questo link ovvero creare la variabile in questo modo:
set /p lista2=<lista_layer.txt
se stampassi la vairabile:echo %lista2%
sembrerebbe ok, ma nel costrutto con
org
non va:
credo sia dovuto al fatto che la variabile racchiuda il testo tra virgolette.
@pigreco qual è esattamente il contenuto del file lista_layer.txt
? Da quello che vedo sembra che esso contenga già le virgolette.
qual è esattamente il contenuto del file
lista_layer.txt
?
@agiudiceandrea stamani rifaccio tutto:
set /p lista2=<lista_layer.txt
ogr2ogr -f "OpenFileGDB" -progress x_Andy_only_Polygon_pesanti.gdb "D:\GitHub\ESRI_FileGeodatabase_GDAL\dati\DBGT_10K_22_V01.gdb" %lista2% -lco FEATURE_DATASET=sardegna
funziona!!!
Eseguendo il comando:
set /p lista2=<lista_layer.txt
e poi
echo %lista2%
ottengo
CL_AGR_CL_AGR_SUP AATT EDIFC_CR_EDF_ME_SR EDIFC_CR_EDF_ME EDIFC_CR_EDF_IS BOSCO_BOSCO_SUP_SR BOSCO AC_VEI_AC_VEI_SUP_SR AR_STR_AR_STR_SUP_SR EDI_MIN_C
R_EDF_ME_SR EDI_MIN_CR_EDF_ME EDI_MIN_CR_EDF_IS ELE_CP AC_VEI
non:
"CL_AGR_CL_AGR_SUP AATT EDIFC_CR_EDF_ME_SR EDIFC_CR_EDF_ME EDIFC_CR_EDF_IS BOSCO_BOSCO_SUP_SR BOSCO AC_VEI_AC_VEI_SUP_SR AR_STR_AR_STR_SUP_SR EDI_MIN_C
R_EDF_ME_SR EDI_MIN_CR_EDF_ME EDI_MIN_CR_EDF_IS ELE_CP AC_VEI"
come nel tuo esempio.
Quindi, quando hai eseguito il comando precedentemente e non ha funzionato, il file lista_layer.txt conteneva la stringa dei nomi dei layer racchiusa tra virgolette.
L'"espansione" delle variabili nel command prompt di Windows non aggiunge virgolette al valore della variabile.
@agiudiceandrea prima di scrivere una issue faccio molti test e ti assicuro che le ho provate tutte, con apici e senza apici, forse quel screenshot riguardava il test con apici.
Stamani funziona, non so il perché, ti assicuro che avevo provato senza virgolette anche perché, il file lista_layer.txt
è un output di un altro script.
Grazie per il tempo che ci hai dedicato.
Stamani funziona, non so il perché,
Evidentemente nelle varie prove che hai fatto c'è stata una svista e hai dimenticato di eliminare di virgolette che avevi aggiunto oppure hai dimenticato di riassegnare la variabile dopo aver eliminato le virgolette che avevi aggiunto o dopo aver ricreato il file senza virgolette...
Ricetta fatta e pubblicata:
https://tansignari.opendatasicilia.it/ricette/bash/lista_layer_da_file_txt/
Il seguente costrutto importa i layer
AC_CIC_AC_CIC_SUP_SR AR_VRD_AR_VRD_SUP EDIFC_CR_EDF_IS AR_STR_AR_STR_SUP_SR CANALE_CANALE_BSU
da un FileGDB ad un altro:la lista dei layer da importare è l'output di un altro script che crea un file
lista_layer.txt
; ho provato ad eseguire il seguente script:dove al posto dell'elenco dei layer ho messo il file
lista_layer.txt
, ma ottengo un errore:il file è presente, ma come ovviare al problema? purtroppo sono sotto windows, c'è un modo di far leggere a
ogr
la lista dei layer da un file?