Question

Je suis en train d'essayer d'étendre notre déjà existant (et de travail) avant de commettre fichier batch pour avoir commis à SVN. Les premiers blocs de partie tout engagement qui n'a pas de commentaires et fonctionne comme prévu. La deuxième partie est un attmept pour bloquer les utilisateurs des fichiers SUO commis, mais cela bloque actuellement tous les commits.

Ma compréhension des scripts DoS pas grand donc je pense qu'il peut être mon utilisation du findstr?

Quelqu'un peut-il aider?

"C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" diff -t %2 %1 | FindStr /R "[a-zA-Z]\.suo"
IF %ERRORLEVEL% EQU 0 exit 0
echo "SUO files cannot be committed" >&2
exit 1
Était-ce utile?

La solution

findstr renvoie 0 si quelque chose a été trouvé, et 1 si rien n'a été trouvé. Vous venez inversé votre chèque.

Aucun lot foo nécessaire, même sur Windows le shell est interactif, vous pouvez l'essayer en vie:

>dir | findstr ".sln"
15.01.2009  16:37            33.844 Project.sln

>echo %ERRORLEVEL%
0

>dir | findstr ".slngimpf"

>echo %ERRORLEVEL%
1

BTW, il est plus facile d'écrire

if errorlevel 0 andthencontinuewithwhatever

De cette façon, vous script est également stable contre le sinistre:

set errorlevel=0

qui sera ensuite détruire toute tentative future d'imprimer le errorlevel avec% errorlevel% de manière correcte.

( modifier ) Remarque importante: j'ai oublié de dire que le if errorlevel vérifie la syntaxe si le errorlevel est supérieur ou égal à la valeur étant testé. Donc, pour utiliser correctement, vous devez toujours vérifier pour la première erreur la plus élevée, comme:

someCommand
if errorlevel 10 ...
if errorlevel 9 ...
if errorlevel 0 ...

Autres conseils

Pas exactement la réponse que vous cherchez, mais vous pouvez bloquer tous les * .suo fichiers avec l'option global-ignores.

scroll top