Substituindo determinada palavra no arquivo de texto usando o arquivo em lote

4

Estou tentando usar um arquivo em lotes para determinar a letra da unidade atualmente instalada e substituir uma palavra-chave no arquivo ini pela letra da unidade.

Basicamente, o arquivo ini contém:

[app]  
dir=Drive\ApplicationPath  
path=Drive\ApplicationPath\Messenger.exe  
ver_number=12091  
lang=1033  
theme=default  
ver=intl  
[applist]   
Cafe=Drive\ApplicationPath\ApplicationData  
im=Drive\ApplicationPath1\ApplicationData  

E assim por diante.

O que estou tentando fazer é colocar o arquivo bat no diretório que contém esse arquivo app.ini para detectar a unidade atual. Alguns usuários podem ter esse diretório em D:, E:, F: e, em seguida, para reescrever esse arquivo app.ini, substituindo a palavra "Drive" na letra de unidade D:, E: ou F:

Pensei em usar Tokens e Delims, mas não sei exatamente como resolvê-lo. Algum conselho especializado? Eu só estou procurando método em lote, porque um arquivo em lotes irá cobrir tudo que eu preciso (detectar o Windows XP ou 7, x86 ou x64 e, eventualmente, copiar este arquivo ini para a pasta correta no sistema operacional para executar).

    
por Tobias 13.10.2014 / 21:55

2 respostas

2

No seu arquivo de lote, use %CD:~0,2% para substituir Drive

CD é o equivalente do DOS para o comando Unix pwd. Ambos os comandos geram o caminho atual. Como você deseja apenas a letra da unidade, queremos tirar as duas primeiras letras apenas da saída.

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\me>echo %CD%
C:\Users\me

C:\Users\me>echo %CD:~0,2%
C:

Fonte: Script de lote do Windows Obtenha o nome da unidade atual

    
por 13.10.2014 / 22:19
1

se você tiver vim instalado (totalmente, com o modo de linha de comando)

vim app.ini -c "%s/Drive/%cd:~0,2%/g|wq"

ele substituirá a palavra Drive dentro do arquivo app.ini pela unidade (letra e vírgula, por exemplo, c: ) em que você está

    
por 13.10.2014 / 22:11