Difference between revisions of "ReNamer:Pascal Script:Read file content"

From den4b Wiki
Jump to navigation Jump to search
(source tags)
Line 7: Line 7:
 
Here is how you can insert into the filename first few characters of file content.
 
Here is how you can insert into the filename first few characters of file content.
  
<pre>
+
<source>
 
begin
 
begin
 
   FileName := FileReadFragment(FilePath, 0, 20) + ' ' + FileName;
 
   FileName := FileReadFragment(FilePath, 0, 20) + ' ' + FileName;
 
end.
 
end.
</pre>
+
</source>
  
 
== Find and extract specific portion ==
 
== Find and extract specific portion ==
Line 17: Line 17:
 
Imagine that you are processing large number HTML files which have ban names. You want to insert the HTML Title into the name for files, i.e. the content of the <nowiki><title></nowiki> tag. This would require reading the file, finding the title tag, and extracting the text inside the tag. Below is a simple example:
 
Imagine that you are processing large number HTML files which have ban names. You want to insert the HTML Title into the name for files, i.e. the content of the <nowiki><title></nowiki> tag. This would require reading the file, finding the title tag, and extracting the text inside the tag. Below is a simple example:
  
<pre>
+
<source>
 
var
 
var
 
   Text, Title: String;
 
   Text, Title: String;
Line 32: Line 32:
 
   end;
 
   end;
 
end.
 
end.
</pre>
+
</source>
  
 
Note: The script is a simple demonstration and in real cases might not work for all of the files, for example if title tag is written as "<TITLE>" instead of "<title>".
 
Note: The script is a simple demonstration and in real cases might not work for all of the files, for example if title tag is written as "<TITLE>" instead of "<title>".
Line 40: Line 40:
 
For example, if you have a text file containing names (one name per line) which you would like to assign to a list of files, you can use the script below:
 
For example, if you have a text file containing names (one name per line) which you would like to assign to a list of files, you can use the script below:
  
<pre>
+
<source>
 
var
 
var
 
   I: Integer;
 
   I: Integer;
Line 47: Line 47:
 
   FileName := FileReadLine('C:\Names.txt', I);
 
   FileName := FileReadLine('C:\Names.txt', I);
 
end.
 
end.
</pre>
+
</source>

Revision as of 03:00, 3 August 2009

There are several functions available which make this task simple, for example: FileReadContent, FileReadLine and FileCountLines. Below are several examples of how to use these functions.

Warning: Some functions are able to alter your file system, so use those with caution! Also, remember that processing large files in the script can dramatically slow down renaming process.

Read first few characters

Here is how you can insert into the filename first few characters of file content.

begin
  FileName := FileReadFragment(FilePath, 0, 20) + ' ' + FileName;
end.

Find and extract specific portion

Imagine that you are processing large number HTML files which have ban names. You want to insert the HTML Title into the name for files, i.e. the content of the <title> tag. This would require reading the file, finding the title tag, and extracting the text inside the tag. Below is a simple example:

var
  Text, Title: String;
  TitleStart, TitleEnd: Integer;
begin
  Text := FileReadContent(FilePath);
  TitleStart := Pos('<title>', Text);
  TitleEnd := Pos('</title>', Text);
  if (TitleStart > 0) and (TitleEnd > 0) then
  begin
    TitleStart := TitleStart + Length('<title>');
    Title := Copy(Text, TitleStart, TitleEnd-TitleStart);
    FileName := Title + ' ' + FileName;
  end;
end.

Note: The script is a simple demonstration and in real cases might not work for all of the files, for example if title tag is written as "<TITLE>" instead of "<title>".

Read lines from file

For example, if you have a text file containing names (one name per line) which you would like to assign to a list of files, you can use the script below:

var
  I: Integer;
begin
  I := I + 1;
  FileName := FileReadLine('C:\Names.txt', I);
end.