Q: I’m trying to move a file that’s within 1 directory and rename the file so that it includes the directory name
Source: C:\Source1\File.txt
Destination: C:\Destination\Source1_File.txt
I want it to take the directory name that it is contained in, then string it to the front of the filename, but move it to it’s destination C:\Destination\.
We would only want it to pertain to the previous directory by 1 level.
- C:\Source1\File1.txt => C:\Destination\Source1_File1.txt
- C:\Source1\Sub\File2.txt => C:\Destination\Sub_File2.txt
A: Yes this is possible using some ‘Pascal Script’
Let’s start with the Source, we added a Windows folder:
In the ‘Directory Filter’ setup we enabled include scanning of subdirectories (optional, is not a must):
Destinations setup, important the first destination must be a ‘Pascal Script’:
First Destination should be a ‘Pascal Script’. We used ‘Source1’ as default PreFix for the Source Root Folder (you can adjust this):
Var tmpPos: Integer; tmpSubDir: String; Const ctRootPrefix = 'Source1'; Begin psExitCode:= 1; // ... add your code here psVSA := ''; tmpSubDir := '%SFS'; tmpPos := pos('\', tmpSubDir); If tmpPos<>0 Then Begin psVSA := Copy(tmpSubDir, tmpPos + 1, Length(tmpSubDir) - tmpPos); psLogWrite(1, '', 'Stripped Prefix from SubDir: ' + tmpSubDir + ' : ' + psVSA); End Else psVSA := ctRootPrefix; End.
Second Destination is a windows folder where the source files should be moved/copied to:
Enable and setup File Renaming in the Windows Destination:
File Renaming setup:
- RegEx: (.*)
- Replacement: %VSA_\1
RunTime Log result:
Output Folder result: