Het doel is wanneer je twee sets van filenames wil vergelijken, waarbij de folder structuur verschilt, je een set van tools en scripting kan gebruiken om dit te doen.
Dit is een situatie die dikwijls voor komt wanneer oude HD's worden gezipt en unzipped op een nieuw computer.
Het principe is dat je op de nieuwe computer een "lijst" maakt van alle files, deze ontdoet van alle folder namen zodat je enkel de file naam over houd.
Dit doe je met het DIR commando , naar een txt file die je nadien met search/replace opschoont in Notepad++
dir /s /b /o:gn > filellist.txt
Op de HD maak je dmv het poreshell commando Tree een export van de drive structuur inclusief foldernamen:
tree /f > folderstructure.txt
Nadien kan je met een App Script in Google sheet, na het importeren van de beide files (A is tree list, B is filename lijst) in de tree list alle files zoeken en deze vervangen door een blanco. Hierdoor houd je nadien enkel nog de files die ontbreken over, samen met het pad op de treelist waar deze te vinden zijn en kan je zo de missende files recupereren.
cmd:> dir /s /b /o:gn > filellist.txt
om in een dir lijst van alle bestanden van je HD alle folder namen te verwijderen, met Notepad ++ search and replace
^.*\\
Voor het vinden van lijnen die geen filename zijn met extentie (lijst files op HD)
(?i)^(?!.*\.(?:pdf|xlsx?|txt|msg|docx?|pptx?|png|jpg|xml|xbrl|lnk|zip|xlsb)$).*$
Replace empty lines
Verwijder na het leegmaken van de voorgaande lijnen, alle lege lijnen
^[ \t]*$\r?\n
function vervangWoordenDoorSpatie() {
//temp val
var cel ="A1"
var outcel ="D1"
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 1. Haal de originele tekst op uit kolom A1
//var tekst = sheet.getRange(cel).getValue();
var texts= sheet.getRange("A1:A").getValues();
for (var r=1; r < texts.length;r++){
cel = 'A'+r;
outcel = 'D'+r;
var tekst = sheet.getRange(cel).getValue();
// 2. Haal de woordenlijst op uit kolom B
var laatsteRij = sheet.getLastRow();
if (laatsteRij < 1) return; // Stop als de sheet leeg is
var woorden = sheet.getRange("B1:B" + laatsteRij).getValues();
// 3. Loop door alle woorden in de lijst
for (var i = 0; i < woorden.length; i++) {
var woord = woorden[i][0].toString().trim();
// Zorg dat we geen lege cellen meenemen
if (woord !== "") {
// Maak een Regex: \b = woordgrens, "gi" = globaal (alles) en hoofdletterongevoelig
// Escaping wordt gedaan door de dubbele backslash
//var regex = new RegExp("\\b" + woord + "\\b", "gi");
var regex = new RegExp( woord , "gi");
// Vervang het gevonden woord door een spatie
tekst = tekst.replace(regex, " ");
}
}
// 4. Zet het opgeschoonde resultaat in cel C1
sheet.getRange(outcel).setValue(tekst);
}
}