2009-11-10 5 views
0

Salutations chers experts!Windows Shell Script: Ne peut pas faire la substitution de chaîne fonctionnant dans le sous-programme

Pourriez-vous s'il vous plaît me conseiller sur la façon de faire face au problème:

@echo off 
cls 

setlocal enabledelayedexpansion 

path=%CD%;%path% 

set NumberOfPages=553 
rem set /A MaxFileIndex=%Counter% - 1 
set MaxFileIndex=1 

del Output.txt 

for /l %%i in (0,1,%MaxFileIndex%) do call :GenerateFileList %%i 
goto :eof 


:::::::::::::::::::::::::: 
:GenerateFileList 
:::::::::::::::::::::::::: 
setlocal enabledelayedexpansion 

set CurrentFileName="File(%1).txt" 
echo !CurrentFileName:"=! > Output.txt 
goto :eof 

:::::::::::::::::::::::::: 
:eof 
:::::::::::::::::::::::::: 
endlocal 

Ce code fait écho à l'écran au lieu d'écrire « ExtractedLinks.txt ». Quel est le problème ici?

+1

Le problème est que le langage CMD de Windows est probablement le pire langage de script jamais utilisé. –

+0

@Joe: Non ce n'est pas. Quelqu'un qui ne sait pas comment l'utiliser est le problème ici. @Andrey: Pourquoi voudriez-vous écrire "ExtractedLinks.txt"? Vous ne lui avez pas dit de faire une telle chose, sur la base de ce que vous avez posté. Au lieu de cela, essayez et expliquez ce que vous espérez accomplir; vous avez seulement donné environ 10% de l'information dont les gens auraient besoin pour même essayer de vous aider. –

+1

Vous avez tous les deux raison. – mob

Répondre

0

Je suppose que vous voulez dire Output.txt pas ExtractedLinks.txt:

set c=!CurrentFileName:"=! 
echo %c% > Output.txt 

De plus, à moins que vous faites quelque chose d'autre dans la boucle, vous voulez probablement ajouter au lieu d'écraser:

echo %c% >> Output.txt 

Et si vous voulez vraiment que le nom de fichier soit ExtractedLinks.txt il suffit de le changer.

echo %c% >> ExtractedLinks.txt 
Questions connexes