Modifier fichier texte à l'aide de fichier de commandes
J'ai cherché un millier d'exemple et essayé, mais aucun d'eux ne fonctionne réellement pour moi. Mon exigence est assez simple, j'ai un fichier - config.txt il a une des lignes:
sql server=localhost
Je suis en train de mettre à jour cette ligne:
sqlServer=mamachine\sql2012
J'ai regardé les exemples en ligne, certains d'entre eux sont tout simplement de travailler avec un ensemble de variables, ou certains ne sont pas de remplacer, mais de l'insérer. Il y a quelques exemples de l'écriture dans un nouveau fichier, mais le fichier a le numéro de ligne en face de chaque ligne. Je ne trouve pas utile instructions sur la façon d'écrire des scripts batch, et aucun fichier de mise à jour des scripts batch fonctionne pour moi.
Il sera très utile si vous laissez quelques commentaires.
Merci d'avance
OriginalL'auteur user3621995 | 2014-05-09
Vous devez vous connecter pour publier un commentaire.
ÉDITÉ à s'adapter aux commentaires
Fichier d'entrée est lu ligne par ligne (
for /f %%l
), puis chaque ligne est divisée (for /f %%a
) et si le premier élément de la ligne est "sqlserver", puis la ligne est remplacée, sinon la ligne d'origine est envoyé dans un fichier.La commande utilisée pour récupérer les informations dans la première
for
boucle comprend unecd.>"%config%"
qui permet de supprimer le contenu du fichier, de sorte que la finale de lignes (qui ont été lus dans la mémoire par lefor
commande avant de les enlever) sont envoyés directement à le même fichier.Pas sûr au sujet du code dans votre commentaire. Voir mise à jour de réponse. Est-ce cela que vous vouliez?
Ça marche, merci pour la réponse. Le problème qui a quelque chose à faire avec le fichier de codage, pour "définir", il ajoute des caractères spéciaux avant, de sorte qu'il n'est pas reconnu comme une commande. J'ai créé un autre fichier de commandes, et copié le tout et ça a fonctionné. Est-ce seulement les scripts de recherche pour le jeton, ce qui signifie le début de la chaîne séparée par des espaces? J'ai un autre exemple <add key="DatabaseServer" value="localhost"/>, j'ai besoin de remplacer "localhost" à %dbServer%, mais les scripts ne fonctionne pas, je pense qu'il est impossible de savoir "DatabaseServer" parce que c'est dans le milieu d'un jeton, non?
OriginalL'auteur MC ND
Vous pouvez faire ceci:
La
FINDSTR
va supprimer toutes les lignes qui commencent parsqlServer=
et créer un nouveau fichier appelénewfile
.La
ECHO
va ajouter une ligne à la fin avecsqlServer=MyMachine\sql2012
.Les deux dernières lignes de supprimer votre
config.txt
et de le remplacer avec la sortie de la première deux lignes.del /q config.txt
salut Marc, les scripts supprime toutes les autres lignes aussi bien, "sqlServer= "est l'un de la ligne, et il y a d'autres paramètres que je ne veux pas changer, savez-vous comment pouvez garder ces?
Modifier la dernière partie de la première ligne de mon script de sorte qu'il corresponde exactement la ligne que vous souhaitez supprimer, c'est à dire FINDSTR /V /B "sql server=localhost" à Défaut, de modifier une question et de montrer comment votre fichier est.
OriginalL'auteur Mark Setchell