Archief - [PS] Bestand selecteren (zonder path)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

pinoken

Legacy Member
Bestaat er in powershell een commando dat je toelaat om de verkenner te openen om zo een bestand te selecteren?

Ik wil het volgende realiseren:

Ik heb een bestand, Test.CSV, waarin 100 maal staat dat ik in Duitsland woon, omdat ik verhuisd ben naar België moet dit dus aangepast worden. het voorbeeld is volledig hypotetisch en moet ook in andere situaties werken, dus ook met andere bestanden en met andere stukken tekst.

Je vult eerst de tekst in die je wil vervangen, vervolgens hetgeen je in de plaats wil en als laatste het path naar het bestand.

De code is volledig bijna volledig. Het programma zou echter ook bruikbaar moeten zijn voor de doorsnee gebruiker. Is er een mogelijkheid om ervoor te zorgen dat de gebruikers dmv een verkenner-achtig venster het bestand kunnen selecteren in plaats van dat zij het path moeten ingeven?


edit: Bijkomdende vraag:

Weet iemand waarom .docx bestanden corrupt worden als ik de inhoudt ervan mbv powershell verander? Ik neem aan dat hiervoor de code nodig is dus die plaats ik hier even onder.

#Het pad (inclusief de extentie van het bestand correct invullen)
$filename = Read-host("Geef het pad naar het bestand waarin u tekst wil aanpassen")

#controleert of het pad bestaat.
$Catch = Test-Path $filename
IF ($catch -eq "true") {

#Vul eerst de te vervangen tekst in, daarna wat in de plaats moet komen.
#LET OP! Deze tekst is hoofdlettergevoelig!
$match = Read-Host("Welk stuk tekst zou u willen vervangen?")
$replacement = Read-host("Door welke tekst moet dit vervangen worden")

$content = Get-Content $filename
$content
$content = $content -creplace $match,$replacement
$content
$content | Set-Content $filename
CLS
Write-Host("Het vervangen van de tekst is compleet")
}
ELSE {
CLS
Write-Host("Vervaning mislukt, het path waarnaar u verwees is niet gevonden. Controleer of het path juist ingevuld is")
}

KiPpIe

Legacy Member
Standaard denk ik dat er zoiets niet in powershell zit.
Maar even googlen en ik kwam uit op deze link:

Powershell Open File Dialog Box | PeetersOnline


De reden waarom uw replace in een docx bestand niet werkt is omdat dit een "binair" bestand is, waarbij er offsets etc worden gebruikt voor de strings. Indien je dus een string met lengte 9 (Duitsland) vervangt door één met lengte 6 (België) zal dit problemen geven neem ik aan.

(dit is maar een gedachte van mij, kan ook verkeerd zijn)

Om idt te voorkomen heb je dan weer dit script:
http://www.powershell.nu/2009/02/05/replacing-text-in-word-documents-through-powershell/

pinoken

Legacy Member
Onzettend bedankt, dit vermakkelijkt een hele resem scripts. :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan