Ho realizzato uno script bash (gli utenti Windows possono utilizzarlo tramite MSYS ) che consente di verificare, per ogni file DRW (le messe in tavola) contenuto nella medesima cartella dove si esegue il comando, se sono presenti tutte le dipendenze che servono per aprirlo (cioè i file PRT e ASM).
Specificando una cartella sorgente, nel caso in cui non trova le dipendenze, va a cercarle ed eventualmente copiarle in automatico nella cartella di esecuzione comando.
Il sorgente dello script è il seguente:
#!/bin/bash
# $Revision: 1.1 $
# $Date: 2012/03/19 13:14:02 $
# By UDA'Software 2012
# Questo file script serve per verificare se, nella cartella corrente,
# i DRW presenti possono accedere a tutti i files necessari per essere
# aperti.
################################################################################
#_______________________________________________________________________________
if [ "${1}" == "--help" ]; then
cat<<EOF
$0 [source_path]
Il programma verifica, per ogni DRW trovato nella cartella corrente,
se in quest'ultima sono presenti tutti i files necessari per aprirlo
correttamente.
Specificando il parametro "source_path" (percorso origine), se un file
necessario non viene trovato nella cartella corrente, lo cerca nel
"percorso origine" e, se lo trova, lo copia automaticamente in quella
corrente.
EOF
exit 0
fi
source_path="${1}"
if [ "${source_path}" != "" ]; then
SOURCE_COMPONENTS_DB=$(ls "${source_path}" | grep -i -e "\.asm" -e "\.prt" -e "\.frm" | sort -n -t. -k3 -r | sed 's@^@:@')
fi
################################################################################
#_______________________________________________________________________________
# Genera la lista dei DRW.
DRAWINGS_DB=$(ls | grep -i "\.drw" | sort -n -t. -k3 -r)
# Genera la lista degli ASM e dei PRT.
COMPONENTS_DB=$(ls | grep -i -e "\.asm" -e "\.prt" -e "\.frm" | tr [:lower:] [:upper:] | sort -n -t. -k3 -r | sed 's@^@:@')
################################################################################
#_______________________________________________________________________________
rm -vf PROE_check_drw_dependency.txt
################################################################################
#_______________________________________________________________________________
IFS=$'\n'
for drawing in ${DRAWINGS_DB}; do
drawing_name=$(echo "${drawing}" | sed 's@\.[0-9]*$@@')
if [ "$(echo "${drawings_name_elaborated}" | grep "/${drawing_name}/")" == "" ]; then
drawings_name_elaborated="${drawings_name_elaborated}/${drawing_name}/"
printf '* ANALISI DI: %s\n' "${drawing}"
printf '* ANALISI DI: %s\n' "${drawing}" | sed 's@$@\r@' >> PROE_check_drw_dependency.txt
drawing_dependency=$(strings "${drawing}" | grep '^3 3 ' | awk '{print $3}' | sed 's@.*!@@')
for dependency in ${drawing_dependency}; do
is_family_table=$(echo "${dependency}" | grep -o '<.*>' | sed 's@\(<\|>\)@@g')
if [ "${is_family_table}" != "" ]; then
item_family_table=$(echo "${dependency}" | cut -f1 -d'<')
dependency="${is_family_table}"
fi
dependency_found=$(echo "${COMPONENTS_DB}" \
| grep -F -e ":${dependency}.ASM" -e ":${dependency}.PRT" -e ":${dependency}.FRM" \
| sed 's@^:@@' \
| tr [:upper:] [:lower:])
components_name_elaborated=""
for item_dependency_found in ${dependency_found}; do
component_name=$(echo "${item_dependency_found}" | sed 's@\.[0-9]*$@@')
if [ "$(echo "${components_name_elaborated}" | grep "/${component_name}/")" == "" ]; then
components_name_elaborated="${components_name_elaborated}/${component_name}/"
if [ "${is_family_table}" != "" ]; then
item_FT_dependency_found=$(strings "${item_dependency_found}" \
| grep "^3 18 ${item_family_table}" \
| awk '{print $3}' \
| sed 's@.*!@@' \
| sort \
| uniq \
| tail -n1)
if [ "${item_FT_dependency_found}" != "" ]; then
printf ' \_ FOUND : %39s [%s]\n' "${item_dependency_found}" "${item_FT_dependency_found}"
printf ' \_ FOUND : %39s [%s]\n' "${item_dependency_found}" "${item_FT_dependency_found}" | sed 's@$@\r@' >> PROE_check_drw_dependency.txt
else
printf ' \_ FOUND : %39s <== [MISSING FT: %s]\n' "${item_dependency_found}" "${item_family_table}"
printf ' \_ FOUND : %39s <== [MISSING FT: %s]\n' "${item_dependency_found}" "${item_family_table}" | sed 's@$@\r@' >> PROE_check_drw_dependency.txt
fi
else
printf ' \_ FOUND : %39s\n' "${item_dependency_found}"
printf ' \_ FOUND : %39s\n' "${item_dependency_found}" | sed 's@$@\r@' >> PROE_check_drw_dependency.txt
fi
fi
done
if [ "${dependency_found}" == "" ]; then
printf ' \_ MISSING : %39s <== [*]\n' "${dependency}"
printf ' \_ MISSING : %39s <== [*]\n' "${dependency}" | sed 's@$@\r@' >> PROE_check_drw_dependency.txt
if [ "${source_path}" != "" ]; then
source_dependency_found=$(echo "${SOURCE_COMPONENTS_DB}" \
| grep -iF -e ":${dependency}.ASM" -e ":${dependency}.PRT" -e ":${dependency}.FRM" \
| sed 's@^:@@' \
| head -n1)
if [ "${source_dependency_found}" != "" ]; then
printf ' \_ FOUND : %39s [%s]\n' "${dependency}" "${source_path}${source_dependency_found}"
printf ' \_ FOUND : %39s [%s]\n' "${dependency}" "${source_path}${source_dependency_found}" >> PROE_check_drw_dependency.txt
cp -v "${source_path}${source_dependency_found}" .
COMPONENTS_DB=$(ls | grep -i -e "\.asm" -e "\.prt" -e "\.frm" | tr [:lower:] [:upper:] | sort -n -t. -k3 -r | sed 's@^@:@')
fi
fi
fi
done
fi
done
################################################################################
#_______________________________________________________________________________