3 added 38 characters in body

Windows Batch, 38 36 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
::

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that "::" is an alias for "rem" that does not require an additional space.

Saved 2 bytes thanks to user3493001.

Windows Batch, 38 36 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
::

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that "::" is an alias for "rem" that does not require an additional space.

Windows Batch, 38 36 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
::

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that "::" is an alias for "rem" that does not require an additional space.

Saved 2 bytes thanks to user3493001.

2 Improved code to spare 2 more bytes.

Windows Batch, 3838 36 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
rem ::

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that there's a space after the"::" is an alias for "rem" that does not require an additional space.

Windows Batch, 38 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
rem 

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that there's a space after the "rem".

Windows Batch, 38 36 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
::

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that "::" is an alias for "rem" that does not require an additional space.

1

Windows Batch, 38 bytes

echo|set/p"=q">q&copy/b/y %0+q %0
rem 

This code creates a file called "q", containing the letter 'q', and then appends it to the original file. Note that there's a space after the "rem".