Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1697 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] nombre maximum de parametres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] nombre maximum de parametres

n°1377776
Industrie
Posté le 30-05-2006 à 20:11:57  profilanswer
 

J ai creer un batch dont le but est de lancer un programme sur tout les fichiers que l'on lui passe en paremetre. Celui-ci marche sans probleme pour un nombre de fichiers limités, mais plante lorsqu'on lui passe plus de 80 fichiers. Hors j'ai besoin de travailler sur un grand nombre de fichiers (environ 8000).  
 
L'erreur qui apparait lorsque je passe plus de 80 fichiers est :  
 

Citation :

Windows ne parvient pas à accéder qu périphérique, au chemin d'accès ou au fichier spécifié. Vous ne disposez peut-être pas des autorisations appropriées pour avoir accès à l'élément.


 
D'aprés mes recherches je pense que cette erreur est du à une limitation windows. Toutefois je n'ai pas trouvé de solution pour contourner le problème. Je suis ouvert à toutes suggestions.
 
Ci-dessous mon code au cas où le problème serait lié à une erreur de ma part :
 

Citation :

 
@echo off
 
SET mypath=C:\progIP
 
:start
if %1x == x goto end
 
SET STRING=%1
 
SET STR=%STRING:~-10%
 
SET ST=%STR:~0,6%
 
%mypath%\demo.exe "%STRING%" %mypath%\convert.txt %mypath%\_copy.txt %mypath%\graph\graph%ST%.txt
 
shift
 
goto start
 
:end
echo End

mood
Publicité
Posté le 30-05-2006 à 20:11:57  profilanswer
 

n°1377790
wackevat
Posté le 30-05-2006 à 20:32:52  profilanswer
 

Déjà tu peux très bien faire :
set VAR=%VAR:~x,y%
donc inutile de définir trois variables différentes pour STRING.
 
D'ailleurs entre les définitions de STR et ST, n'y a-t-il pas une rédondance ?
 
Pour répondre à ton  problème, tu comptes taper les 8000 params à la main ou par copier/coller ?
 
Ce serait plus simple d'employer une boucle for :
 

Code :
  1. for %%s in (
  2.   STR1
  3.   STR2
  4.   ...
  5.   STR8000
  6. ) do (
  7.   ...blabla avec %%s...
  8. )


 
for /?
pour plus d'infos.
 
Note : STR1... STR8000 peuvent très bien être stockés dans un fichier séparé.

n°1377796
Industrie
Posté le 30-05-2006 à 20:43:37  profilanswer
 

merci pour ton aide
 
Mais pour les fichiers je compte plutot les glisser dans le .bat, ce sont des images tirées de plusieurs vidéo et donc je voudrais choisir sur lesquelles travailler simplement en les glissant dans le .bat.
 
S'il n'y a pas de moyen, je pourrais utiliser le fichier temporaire mais le programme n'étant pas pour moi, il serait plus simple de simplement mettre les fichiers dans le .bat pour qu'ils soient traités !

n°1377807
wackevat
Posté le 30-05-2006 à 20:57:29  profilanswer
 

Je ne comprends pas trop ce que tu voulais dire par "mettre les fichiers dans le .bat pour qu'ils soient traités" :(

n°1377816
Industrie
Posté le 30-05-2006 à 21:22:48  profilanswer
 

en fait je veux le faire par une interface Windows et donc faire un clic gauche sur les images pour les glisser jusqu'au .bat et donc les donner en argument du .bat.
 
J'espere avoir ete clair cette fois :s

n°1377835
wackevat
Posté le 30-05-2006 à 22:22:43  profilanswer
 

Oki, tu veux fournir les params par glisser/déposer.
 
Je ne pense pas que ça soit une soluce "universelle", dans le sens que cette manip forme une ligne de commande shell :
<chemin_complet_du_batch> <liste_des_params>
 
Or, sous Windows, la longueur de cette ligne est limitée à x caractères, dont x je ne me souviens plus ;) mais ce n'est pas infini, d'où ton problème de traitement d'au-delà de 80 fichiers abordé initialement.

n°1378054
Industrie
Posté le 31-05-2006 à 12:45:21  profilanswer
 

ok merci,
 
Au final je vais donc utiliser la méthode que tu m'as donné plus haut !

n°1378234
Industrie
Posté le 31-05-2006 à 16:13:16  profilanswer
 

hum...
 
j'essaye donc d'utiliser une boucle for mais

Citation :

@echo off
 
FOR /F %%a IN (tmp.txt) DO (  
 echo %%a:~-4%
)


ne tronque pas la valeur comme je le souhaiterais, et m'affiche : monfichier.ext:~-4 !
tmp.txt contenant 1 nom de fichier à traiter par ligne
 
est-ce donc possible de tronquer %%a ???

n°1378546
wackevat
Posté le 01-06-2006 à 08:13:37  profilanswer
 

Industrie a écrit :

est-ce donc possible de tronquer %%a ???


Code :
  1. FOR /F %%a IN (tmp.txt) DO (
  2.   call :process %%a
  3. )
  4. goto end
  5. :process
  6. set VAR=%~1
  7. echo %VAR:~x,y%
  8. goto :eof
  9. :end


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] nombre maximum de parametres

 

Sujets relatifs
Validation selon nombre de caractère et Copier-collerGenerer un nombre aleatoire.
decomposer une image en le plus petit nombre de rectangles possibleComment connaitre le nombre de char dans une fichier texte.txt
faire entrer dans une variable le nombre de carractere d une autrenombre de lignes et de colonnes d'un range
BATCH DOS :Comment passer les paramètres à partir d'un fichier ?[RESOLU] Comment lancer excel en mode batch ?
[Batch]verifier les fichiers et copier les modifiés uniquement?? 
Plus de sujets relatifs à : [Batch] nombre maximum de parametres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR