Discussione:
[OT] for in do call %0 parametri-vari
(troppo vecchio per rispondere)
BIG (Umberto)
2011-04-07 20:44:54 UTC
Permalink
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.---------+
gioacchino
2011-04-08 09:59:26 UTC
Permalink
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
c:\subdir\"c:\subdir\%0" %%v
... 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
BIG (Umberto)
2011-04-09 20:15:41 UTC
Permalink
gioacchino in data Friday 08 April 2011 11:59, nel gruppo it.comp.os.dos ha
Post by gioacchino
Post by BIG (Umberto)
c:\subdir\"c:\subdir\%0" %%v
... 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
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.---------+
gioacchino
2011-04-10 10:43:09 UTC
Permalink
Post by BIG (Umberto)
gioacchino in data Friday 08 April 2011 11:59, nel gruppo it.comp.os.dos
Post by BIG (Umberto)
c:\subdir\"c:\subdir\%0" %%v
... 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
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...)!
Prego.
Post by BIG (Umberto)
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?
%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.

Continua a leggere su narkive:
Loading...