Newsgroup: it.comp.os.dos
Titolo: [OT] for in do call %0 parametri-vari

Posto qua anche se non direttamente pertinente in quanto il problema é su un
sistema XP, ma dato che nel passato ho sempre trovato persone competenti...
Dunque ho un batch puro in una specifica sottodirectory che richiama se stesso
in un loop con dei parametri:
---[CUT]---
@echo off
if not (%1)==() goto loop
:main
set par1=numero1
det par2=numero2
---
cd altro-disco
cd altra sottodirectory
---
---
for %%v in (dati-ingresso) do call c:\subdir\%0 %%v
---
---
goto fine
:loop
---
---
........ > file%par1%.txt
:fine
---[CUT]---
Ora, se questo lo faccio partire da finestra dos, funzia.
Se creo un link (sul desktop) e lo faccio partire da li, il path del programma
(la voce: directory di lavoro), viene aggiunto al nome del programma quindi
la "call" diventa tipo:
c:\subdir\"c:\subdir\%0" %%v
... ed ovviamente la cosa non funziona.
Dato che il programmillo lo posso avviare sia da finestra dos che dal link sul
desktop, debbo poter distinguere i 2 casi e correggere la situazione.
Senza impazzire, esiste un accrocchio per scoprire da quale parte viene avviato
il tutto?
L'alternativa sarebbe sostituire il %0 col nome reale del programma, ma a volte
ne faccio una copia con un'altro nome, cambiando qualche parametro, e se mi
dimentico anche di cambiare il nome nel richiamo nella "call" faccio dei
casini (mi sovrascrive dei files che non vorrei...)
Non é questione di vita o di morte, ma semplice curiositá...
-- 
+---------------------------------------------------------------------------+
|                   Per informazioni e suggerimenti                         |
|                           
www.youporn.com
                                 |
+-----#10--------------------Campagna contro le pubblicita` idiote.---------+

 ... ed ovviamente la cosa non funziona.
ti serve l'equivalente di basename nei sistemi gnu/linux
prova a cercare basename per windows o basename.bat
dovresti trovare quello che cerchi

 dovresti trovare quello che cerchi
Ti ringrazio. Mi ero intrippato al comando non documentato truename del veccho
dos.
Non avevo nenche lontanamente pensato al basename (ed uso linux da annni...)!
Un'altra domanda. É possibile da batch saprere se sta girando l'interprete dei
comandi cmd.exe o 
command.com
?
Il comando MEM risonde sempre con command. In macchina virtuale, ho notato che
nel caso di shell di cmd.exe, command compare 1 volta, in shell da
command.com
, command compare 2 volte.
Potrebbe essere una valida soluzione?
Lo domando in quanto ho diverse routine (lettura directory attuale in un
parametro, lettura input in un parametro) che debbo gestire diversamente a
seconda di quale shell é attiva.
-- 
+---------------------------------------------------------------------------+
|    La paranza e' la danza di una stronza che, sull'isola di Ponza,        |
|    si tirava  la patonza.                                                 |
+-----#21--------------------Campagna contro le pubblicita` idiote.---------+

 valida soluzione?
%CMDCMDLINE% dovrebbe essere settata ad un valore nel caso di cmd.exe.
Nel caso di 
command.com
 non dovrebbe essere settata.
Dico dovrebbe perché non ne sono sicuro se questa può essere una buona 
soluzione visto che non utilizzo windows.