---
name: "preprocessFile"
type: command
status: ok
groups: ["System"]
arma3_since: "0.50"
locality: {"argument": null, "effect": null, "server_exec": false}
source: https://community.bistudio.com/wiki/preprocessFile
revid: 349792
updated: 2023-11-20T22:10:15Z
---

# preprocessFile

*Command · System · Arma 3 v0.50 · introduced in Operation Flashpoint v1.85*

## Description

Reads and processes the content of the specified file. Preprocessor is C-like, supports comments using `//` or `/*` and `- /` and [PreProcessor Commands](../topics/PreProcessor_Commands.md).
Due to the hard-drive access this command executes and the lack of caching this command should not be used in time-critical script loops.

> [!WARNING]
> If the file you are loading is not prepared using UTF-8 encoding and contains some characters [with codes](../commands/toArray.md) > 127, they might convert incorrectly.

## Syntax

```sqf
preprocessFile fileName
```

**Parameters:**

- `fileName`: [String](../topics/String.md) - path to the file and name of the file

**Returns:** [String](../topics/String.md)

## Examples

### Example 1

```sqf
_content = preprocessFile "myFunction.sqf";
```

## See also

[fileExists](../commands/fileExists.md) · [preprocessFileLineNumbers](../commands/preprocessFileLineNumbers.md) · [loadFile](../commands/loadFile.md) · Function · [SQF Syntax](../topics/SQF_Syntax.md) · [call](../commands/call.md) · [spawn](../commands/spawn.md) · [execVM](../commands/execVM.md) · [PreProcessor Commands](../topics/PreProcessor_Commands.md)

## Community notes

**Alef** — 2008-03-04

File path is always relative to mission directory. If script dir\a.sqf includes dir\b.sqf, use "dir\b.sqf" and not "b.sqf".

---

**Kju** — 2011-07-08

Use [preprocessFileLineNumbers](../commands/preprocessFileLineNumbers.md) instead as it provides more context information on error.

---

**Killzone_Kid** — 2013-12-17

The main difference between [preprocessFile](../commands/preprocessFile.md) and [preprocessFileLineNumbers](../commands/preprocessFileLineNumbers.md) is that the latter adds #line directive to the target file, which allows to log the `__LINE__` error happened at and the `__FILE__` error happened in.

---

**BrotherhoodOfHam** — 2014-07-25

Essentially what the preprocessFile command does is it refers to the contents of a file as a string:

Example 1:

boop.html:

```html
<t align = 'center' valign = 'middle' shadow = '0' size = '2'>structured text</t>
```

init.sqf:

```sqf
_text = parseText preprocessFile "boop.html";
hint _text;
```

This is especially useful for long strings, and it works on files with any file extension as long as they can be edited with a text editor.

Example 2:

init.sqf:

```sqf
hint preprocessFile "description.ext";
copyToClipboard preprocessFile "mission.sqm";
```

The above is all valid. However, using *.jpg or any other files saved in an image format is not possible.

<sub>Source: [BI Community Wiki — preprocessFile](https://community.bistudio.com/wiki/preprocessFile) (revision 349792).</sub>
