2017-08-27 4 views
0

Donc j'essaie de m'enseigner un peu de codage de base cet été, et j'essaye d'écrire un programme pour moi et mon ami. Nous aimons tous deux la musique, et de temps en temps nous mélangeons des chansons. Bien qu'il ne me suffise pas de trouver de bonnes combinaisons de chansons, j'ai voulu écrire un programme qui nous aide à nous souvenir des combinaisons.Comment écrire un fichier batch pour trouver des combinaisons de variables

Pratiquement, je voulais mettre toutes les combinaisons de chansons dans un fichier txt manuellement, par exemple:

song1 song2 
song1 song3 
song2 song4 
song4 song3 

Ensuite, je voulais créer un lot qui peut trouver toutes les combinaisons avec par exemple. song2 et donnez une liste de ceci. Quand mon entrée est song2 dans ce cas, je veux que ma sortie soit:

song1 
song4 

Ma tentative de ce ci-dessous, notez que je l'ai déjà écrit le script pour créer les deux fichiers txt. Je suis désolé si c'est bâclé, je ne sais rien sur le codage en dehors de ce que j'ai appris en ligne.

:list 
    setlocal EnableDelayedExpansion 
    cls 
    echo With what track would you like to start? 
    echo. 
    Set /P "track= " 
    FIND /I "%track%" combinations.txt >> resultstemp.txt 
    echo. 
    echo --- GOES WITH: --- 
    echo. 
    echo. 
    attrib -h -s %~dp0\resultstemp.txt 
    type %~dp0\resultstemp.txt 
    break>resultstemp.txt 
    attrib +h +s %~dp0\resultstemp.txt 
    echo. 
    echo. 
    pause 
    cls 

La sortie actuelle est:

With what track would you like to start? 

song2 

---goes with: --- 

------------Combinations.txt 
song2 song1 
song4 song2 

Press any key to coninue . . . 

Pendant que je veux que ce soit:

With what track would you like to start? 

song2 

---goes with: --- 


song1 
song4 

Press any key to coninue . . . 

Répondre

0

EDIT: Je modifié le code pour gérer des chansons qui peuvent inclure des espaces .

@echo off 
setlocal 

echo With what track would you like to start? 
echo/ 
set /P "track=" 
echo/ 
echo ---goes with: --- 
echo/ 
for /F "delims=" %%a in ('FIND /I "%track%" ^< combinations.txt') do (
    for %%b in (%%a) do (
     if "%%~b" neq "%track%" echo %%~b 
    ) 
) 

Si vous avez une question sur ce code, vous pouvez supprimer la ligne @echo off pour voir ce qui est exécuté exactement ...

Par exemple, en utilisant ces données dans le fichier d'entrée:

"Love me do Insomnia" song2 
"Love me do Insomnia" "Another song" 
song2 song4 
song4 "Another song" 

... Ceci est un exemple de sortie:

C:\Users\Antonio\test> test.bat 
With what track would you like to start? 

song2 

---goes with: --- 

Love me do Insomnia 
song4 

C:\Users\Antonio\test> test.bat 
With what track would you like to start? 

Another song 

---goes with: --- 

Love me do Insomnia 
song4 
+0

cela semble fonctionner très bien, jusqu'à ce que les chansons contiennent sp aces. Quand j'écris «Aimez-moi faire de l'insomnie» (ou quoi que ce soit), je reçois l'amour, moi et je fais séparément quand je donne de l'insomnie comme contribution. Un moyen de contourner cela dans votre méthode? –

+0

Voir ma modification ... – Aacini