Code Snippets for Pathes and filenames

Moderator: MVogt

Antworten
Benutzeravatar
Theo_Gottwald
Beiträge: 309
Registriert: 03. Okt 2009, 08:57
Wohnort: Herrenstr.11 * 76706 Dettenheim
Kontaktdaten:

Code Snippets for Pathes and filenames

Beitrag von Theo_Gottwald » 14. Dez 2018, 15:54

These are a few small code snippets you need when dealing with paths.
It's about paths and filenames.

1. If you only want to go one level up from any given path, you can do this:

Code: Alles auswählen

'Any path, where the script itself is located
VAR\$$PSA=?pfad
' The output variable now contains
' c:\program files (x86)\matrix42\package robot\remfiles\projects

'Switch one level up
BLB\$$PSA
VAR\$$PSB=$v1$

' Copy To Clipboard
CTC\$$PSB

'Text in the clipboard is now
' c:\program files (x86)\matrix42\package robot\remfiles
In the clipboard is now the path, a directory level higher than where the script is currently.

2. Automatically use Path of the executable in "EXE-Mode" or use "?path" of the Script in the Editor?
If you want to run the script as EXE you need $ev4$ instead of "?path".
This could be automatically distinguished by using the command IEX\(If EXE Mode):

Code: Alles auswählen

'If the script is running as EXE
IEX\
  VAR\$$PAT=$ev4$
ELSE
'If the script is running in the editor
  VAR\PAT=?pfad
EEX\

BLB\$$PAT
VAR\$$PSA=$v1$
CTC\$v1$
But you do not have to go this extra-mile.
Because $ev4$ produces exactly the same result as "?path" in editor mode.
So if you use $ev4$ instead of ?path, you'll always get the right result.

3. Sometimes you need a file name that you already have, but with a different extension.

Code: Alles auswählen

'Again we take a concrete file (with or without path)
VAR\$$FIC=f:\files\tiefer\Meinfile.pas
'Now we determine everything before the last'. "
BLC\$$FIC|.
VAR\$$FIX=$v1$

'And so we can now determine the other files of the same name, another extension
' f:\files\tiefer\Meinfile.log
VAR\$$FIN=$$FIX.log
' f:\files\tiefer\Meinfile.inc
VAR\$$FIS=$$FIX.inc
MBX\$$FIS
4. If you want to wait in the course of a process until a certain file appears, a command WFF\ (Wait For File) could be used.
Let's take a compilation, because a file is created. Only when it is there should another process continue to use the file, for example compress or attach a certificate.

With the MPR you just write "WFF" (Wait for File)

Code: Alles auswählen

WFF\$$FIN
And if you want to wait until it has been safely deleted or is no longer there, just write:

Code: Alles auswählen

' Delete file
DEL\$$FIN
'And for safety's sake wait until the file is really gone from all buffers
WFF\$$FIN|!
5. In the course of such batch scripts you have to change here and there also the current directory, this is how it works:

Code: Alles auswählen

VAR\$$PAT=c:\myfolder\
CHD\$$PAT
'Small break of 150 ms
TDL\150
6. And finally you want to call a commandline tool that gets a parameter.

Code: Alles auswählen

VAR\$$COM=c:\bin\mytool.exe
VAR\$$FIC=My parameters /v /x
EXE\$$COM|"$$FIC"
7. Local variables
Now if you have a collection of such batch scripts, and one calls another (with JNF\)
At least there is the danger that a variable of a called sub-script overwrites a variable of the calling script.
To avoid this you can use script local variables. This works with VVS\ and VVR\.

To do this, call the calling script as usual:

Code: Alles auswählen

' The Script: "MySubScript.rem" in the same folder is called, two parameters are passed to the script.

VAR\$$TXT=Hallo Franz
JNF\MySubScript.rem|Parameter1|Parameter2
' Output is "Hallo Franz"
MBX\$$TXT
@
For example, the called sub script would look like this:

Code: Alles auswählen

' MySubScript.rem
VVS\
VAR\$$TXT=Hallo Peter
'The variables are all saved, but the parameters are all there.
VAR\$$NAM=$$_01
VAR\$$NAN=$$_02

MBX\ Der erste Parameter ist: $$NAM
MBX\ Der zweite Parameter ist: $$NAN
' Output is "Hallo Peter"
MBX\$$TXT
VVR\
' The @ ends a subprogram that was called using "JNF\".
@

8. Splitting file paths with the MPR.
Basically, you can easily break a path with GFT\ (Get File Tokens).
With "GFT\" you can split a file path into the component parts
- directory (without backslash at the end),
- filename (without extension) and
- extension (if there is one)
The tokens are stored in program internal variables:
$v2$ contains the directory without a final backslash,
$v3$ contains the file name without extension,
$v4$ contains the extension,
$v5$ contains the root directory with final backslash and
$v6$ contains the pure directory name without a final backslash.
If this is a network path, the directory name is used instead of the directory name and $v6$ contains the server name supplied with final backslash.
If the name of an (existing) directory is transferred in the data part, $v3$ and $v4$ remain empty.
If you leave the data part blank, the contents of $v1$ will be used as the file path. For example "IEF\" leaves File pathes in $v1$ (If Exists File/Folder).

Example:
DVV\1+
GFT\?remexe
@
Output:
$v2$=e:\wr6-code
$v3$=remote
$v4$=exe
$v5$=e:\
$v6$=wr6-code

Antworten

Zurück zu „Package Robot“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast