Newsgroup: it.comp.os.dos
Titolo: Batch

Ho una dirctory (dos 6.22) con parecchi (centinaio) files che hanno lo stesso
nome ma estensione diversa a gruppi di 3.
Ossia:
1234-1.dis
1234-1.plt
1234-1.dwg
4567-2.dis
4567-2.plt
4567-2.dwg
1234-21.dis
1234-21.plt
1234-21.dwg   eccetera.
Ora, io devo fare un controllo che verifichi che ad ogni file .dis corrisponda
la presenza dello stesso con le altre due estensioni.
Il mio problema e', tramite un ciclo for-in-do centrato sulla prima estensione,
estrarre il nome del file senza estensione.
Mi sembra di aver visto tempo fa, da qualche parte, un qualcosa di simile, che
metteva il nome del file senza estensione in una variabile, ma non riesco piu'
a trovarlo...
-- 
,,, e dopo che ci avranno trasformato in vegetariani, a causa del vino al
metanolo, del pesce al mercurio, dei polli alla diossina, dei maiali agli
ormoni,  delle mucche,  pecore e  capre pazze,  ci daranno da mangiare la
frutta al benzene e la verdura radioattiva.
La nostra unica salvezza sara' nel Soylent Green!

a trovarlo...
for (%%f) IN (nomefile) DO if exist %f if exist %f.plt fai qualcosa
questo però funziona solo se nomefile è senza estensione, altrimenti
cerca nomefile.estensione.plt
Dovresti trovare una soluzione eliminando l'estensione nel file
sorgente ma al momento non mi viene in mente niente almeno in dos
puro. In 4Dos la soluzione è molto più facile.

 a trovarlo...
Prova con questo:
--cut--
@echo off
if [%1]==[] ctty nul
if [%1]==[] goto for
echo.set a=%1>tmp.bat
echo.a 80>deb
echo.sub cx,6>>deb
echo.>>deb
echo.p =80>>deb
echo.w>>deb
echo.q>>deb
debug tmp.bat <deb >nul
call tmp.bat
del tmp.bat
if not exist %a%.plt echo %a%.plt non esiste>con
if not exist %a%.dwg echo %a%.dwg non esiste>con
goto end
:for
for %%a in (*.dis) do call %0 %%a
ctty con
if exist deb del deb
:end
set a=
--cut--

 Prova con questo:
  Cazzo, io ti Amo e ti Odio.
  Ormai lo  so: quando  leggo il  tuo Nick, gia`  prima di  leggere il
testo mi dico fra me e me:
  "sta a vedere che ha risolto la cosa con il `debug'"...
  Ti  "Amo" perche'  le tue  soluzioni sono  "fantastiche"; ti  "Odio"
perche' non  ci sono arrivato io,  a "quei tempi"... Da  qualche parte
(_forse_)  dovrei  avere  ancora  un  pomposamente  denominato  "Label
Disassembler" scritto in Basic (GwBasic), che appunto si incaricava di
"elaborare"  l'output  di un  comando  del  tipo `debug  
nome_file.com
<parametri >risultato.txt'...
  Non ti dico quel che ci ho fatto, con quel programmillo, ma immagino
che tu riesca a immaginarlo...
  Ma di utilizzare debug per `creare' e/o modificare qualcosa...
                                * * *
  Una  domanda  spassionata da  un  "Vecchio  MSDossiano convertito  a
Linux" a un "vetero Debugghiano-e-tanto-di-cappello":
  Secondo  te,  come mai  sotto  MS-DOS  (che, diciamola  tutta,  come
Sistema Operativo non era mica  "fuffa") non sono mai nati "linguaggi"
alternativi al Basic?
  Voglio dire:  tante cose che  sotto MS-DOS riuscivo a  risolvere con
combinazioni  piu`  o  meno  spurie  di file  .bat  e  file  .bas  che
interagivano fra di loro (e lasciamo  perdere quel che sono riuscito a
combinare con il "Basic 7.0"...)...
  Dicevo:  appena conosco  Linux,  scopro  che ha  una  `bash' che  e`
l'equivalente  della  shell del  dos,  solo  che ha  comandi  talmente
evoluti che...
  Evabbene.. ma tutti gli altri linguaggi?
  Paradossalmente,  spesso mi  "manca" il  buon vecchio  "Basic" sotto
Linux, pero` il Perl e` una cosa "enorme"... ma se ci fai caso, non e`
che quel che  puoi fare con il  perl sotto Linux sia  molto diverso da
quel che  "potresti" fare  con il  Basic Microsoft,  se ci  fossero le
librerie apposite...
  E se  inizi a  enumerarli: perl, phyton,  ruby, la  varie "shell"...
Cavolo! Sono tutti linguaggi "interpretati" al volo!
  Secondo te, perche' sotto MS-DOS no?
-- 
"Ho trovato una mirabile dimostrazione,  ma il margine di questo libro
è troppo piccolo per contenerla".
(Cio` che ho scritto, ho scritto.)

if [%1]==[] goto for
[eccetera...]
Era proprio la cosa che cercavo!
Mi devo studiare meglio il giochino del debug, ma la cosa funzia.
Grazzzie!


puro. In 4Dos la soluzione č molto piů facile.
Il ciclo for lo conosco, era il trucco di separare il nome del file
dall'estensione che cercavo...
Comunque ho avuto gia' la risposta (vedi sotto).
Grazie comunque.


alternativi al Basic?
A Bill Gates interessava vendere e preferiva l'output colorato e
bellino (che piaceva tanto a chi non era capace di utilizzare il dos)
rispetto a queste caratteristiche.
Windows non è altro che un tentativo riuscito di semplificare la vita
all'utente a costo di eliminare alcune caratteristiche troppo
"professionali".

>  Secondo te, perche' sotto MS-DOS no?
Non credo di aver una risposta soddisfacente da darti. Credo però che
ciò sia dovuto alla stessa natura di ms-dos: esso è comunque un software
commerciale, e come tale spetta alla software house la decisione di
quanti e quali programmi includere. Ovvio che in questa scelta ha grande
peso l'interesse economico che l'azienda può trarre includendo (o meno)
qualche programma. Linux invece non è orientato al profitto, perciò in
esso il buonsenso ha prevalso sulla logica di mercato.

Non credo di aver una risposta soddisfacente da darti. Credo però che

Penso che il motivo sia _anche_ da ricercare nella cerchia degli utilizzatori!
Linux (e in primis unix) sono nati da un ambiente universitario e di ricerca,
che necessitava, e necessita tutt'oggi,  di strumenti di programmazione
efficaci per affrontare i vari problemi.
Ms-dos é nato per dare un accesso base alle operazioni correnti di disco e
poche altre cose.
É ovvio che, sia la programmazione batch, che i comandi disponibili, sono stati
implementati al minimo necessario.
Guarda solo all'evoluzione che c'é stata dal dos 3.3 al dos 5.0 (vabbé non era
natío microsoft ma comprato da altri, ma non fa testo), i comandi aggiunti sono
stati comunque pochi, l'
edit.com
 sostituito dall'editor del quick basic,
qualche cosina aggiunta, altri comandi migliorati, ma niente di folgorante.
Nel dos 6.0 é stata aggiunta la compressione di memoria (per giunta fallata)
"rubata" paro-paro dal programma stacker.
I sistemni 'nix invece si sono potuti evolvere grazie agli studi di persone
indipendenti che necessitavano di strumenti validi allo svolgimento del loro
lavoro.
Comunque, oltre al basic, é esitito anche un quick-c (molto simile per
interfaccia al masm) ed un compilatore pascal (di quest'ultimo so solo per
sentito dire...)



bello, bello, bello
ma mi piacerebbe capire... :(
cosa diavolo passi a debug e (soprattutto) cosa succede dopo?
potresti per favore commentare un po'? grazZzie!
-- 
A. 


Questo non lo so, perchč come programmazione Clipper (*.prg)
me ne intendo abastanza ma di batch ...poca roba..;-)
Chiedi a LUI ...interessa anche me...! ;-)
--
Walter 

me ne intendo abastanza ma di batch ...poca roba..;-)
Banale!
Dunque, viene caricato da $100 il nome completo del file (per esempio
1234-1.dis + cr + lf).
In $80 (spazio riservato ai parametri) viene caricata l'istruzione DEC CX,6
ossia decrementa il registro CX di 6.
Ora se si fanno i conti, lf + cr + s + i + d + .  fanno appunto 6 caratteri.
Il comando P =80  serve al debug per eseguire _solo_ l'istruzione posta in $80,
ne consegue che viene eseguito solo DEC CX,6.
Quando si carica un file con il debug, viene messo in CX la lunghezza in bytes.
Il registro CX serve al anche debug, per contare i bytes da scrivere con il
comando W.
Ne risulta che viene riscritto il file (tmp.bat) con 6 caratteri in meno.
Ne risulta che l'estensione (punto compreso) vengono cancellati!!!
E non importa di quanto sia lungo il nome del file e neppure se c'e' il path!!
Geniale!
Ho lavorato parecchi anni fa con l'assembler (sopratutto masm) ed il debug lo
utilizzavo a iosa, ma ora sono un po' anchilosato e francamente non mi era
neppure venuta in mente una cosa simile ;-)))


 neppure venuta in mente una cosa simile ;-)))
A me non passava manco per l'anticamera del cervello...
In ClipperIII l'avrei fatto e compilato in MAX 10 minuti (avevo già in 
mente...)
ma in batch (buio completo ,,,,) ;-(((
Comunque mi fa piacere vedere questi "virtuosismi" ;-)))
Ciao,
-- 
Walter 

 sentito dire...)
  Il  "turbo-pascal"?  Cavolo!  Io   invece  ho  utilizzato  molto  il
"turbo-c".  E  poi  c'erano  il  fortran, il  lisp  {[(ci)  [(ho  mai)
(capito nulla)]]}, e  chissa` cos'altro... ma erano tutti  - appunto -
`compilatori'...
-- 
Cio` che ho scritto, ho scritto.

 passi (dimensione dei files 150+350+150K).
  Al  tempo. Windows  3.11  (che si  appoggiava  `totalmente' al  dos)
richiedeva, per  funzionare in maniera almeno  `decente' (il pacchetto
Office 5, tanto  per fare un esempio), almeno un  386 (ma molto meglio
un 486) con 16Mb  di Ram. Se ne avevi 32, ecco,  il sistema iniziava a
'sembrare'  stabile.  Altrimenti  ti  conveniva passare  al  3.1  (che
riusciva a funzionare decentemente anche sul mio povero 286 con 1Mb di
Ram).
  Il compilatore  C 6.0  (che ho usato)  infatti prevedeva  la memoria
"Huge", per poter utilizzare la  memoria... espansa o estesa? bah, chi
si ricorda piu`...
  E stiamo parlando di piu` di 10  anni fa... cioe` piu` o meno quando
nasceva Linux, che guarda caso richiedeva almeno un 386 per girare.
  Solo  che all'epoca  esisteva gia`  da anni  l'Amiga, che  con 512Kb
aveva un ambiente  grafico, una shell molto piu` evoluta  ed era stato
sviluppato  almeno un  linguaggio  alternativo "a  script" (del  quale
confesso di non  ricordarmi il nome: continua a frullarmi  in testa la
parola "arpa"...)
  Non mi pare sia stato un problema di Ram.


 parola "arpa"...)
arexx?
-- 
A. 

   Non mi pare sia stato un problema di Ram.
L'Amiga rispetto al PC IBM aveva un processore grafico separato che 
permetteva di risparmiare parecchie risorse (memoria ed elaborazione).
Ma sai se il linguaggio alternativo era interpretato od era un compilatore?
Ad ogni modo se tanto rimpiangi il basic esistono sotto Linux dei 
programmi per interpretare il basic.  Ricordo di averne provato uno 
alcuni anni fa ma ora non ne trovo piu` traccia sul mio PC.


   Il  "turbo-pascal"?  Cavolo!
Era il 3.1 o il 3.5... l'ho usato al liceo per fare programmi di 
fisica e un po' di analisi matematica... che ricordi... :)))
-- 
Mandi
 MailMaster C.
!------------------------------------!
!  I'm reading: "Linux Pratico" by M. Stutz
!  OSC Rulez!       >^..^<
!------------------------------------!
"Il giornalismo musicale? Gente che non sa scrivere, 
che intervista gente che non sa parlare, per gente 
che non sa leggere". - Frank Zappa (tutti d'accordo?)
Remove TELEVERIMUSINARIFRRRR if you want to write me back! Cheers.

 arexx?
  Eccola li`! :DDD
-- 
"...va  beh, nessuno  e`  perfetto... si`, lo  SO!  che sono  l'Essere
Perfetissimo, Creatore e  Signore!...  Grazie! Adesso  ti trasformo in
serpente, cosi` impari: striscia mo' li`, viuscia via!"
