Tag Archives: Windows

xcopy alternative for Windows Vista and Windows Server 2008 – ROBOCOPY

Robocopy – Robust File Copy for Windows is bundled with Windows Server 2008, Windows 7 and Vista. If you can not do something in xcopy, you probably can in robocopy. For example robocopy can:

  • resume on network error, specify number of Retries, etc.
  • ability to copy NTFS permissions and attributes including timestamps;
  • synchronize mode;
  • and a lot more.

Example, copy src_folder to dst_folder including sub-folders:
robocopy C:\src_folder C:\dst_folder /E

Help:
robocopy /?

More reading:
http://en.wikipedia.org/wiki/Robocopy

Batch script to test if folder / directory is empty

Yesterday I needed a Dos batch script to check if folder is empty. A little Google search revealed some methods:

  • Using dir and find commands, does not work on non-english Windows versions: www.computing.net
  • Using dir command with /a-d, does not work for folders: www.computing.net
  • Using dir and findstr commands, does not work on non-english Windows versions: windowsitpro.com

If you want something done right do it yourself. Here is a my script:
@echo off
for /F %%i in ('dir /b "c:\test directory\*.*"') do (
   echo Folder is NON empty
   goto :EOF
)
echo Folder is empty or does not exist

Update Sep 21, 2011 – added “or does not exist”. Thanks to the Thump.
Update Jul 5, 2013 – for more code examples see the comments!

Join (merge / concatenate) split files: Windows or Linux

Sometimes you have to join two files together. There are plenty of tools for file spitting and joining (restoring), but I prefer the build in ones.

Use copy command under Windows:
copy /B file1.ext + file2.ext result_file.ext
“B” stands for binary file

Use cat command under Linux:
cat file1.ext file2.ext > result_file.ext

Here are two example files shown in hexadecimal and ascii:

file1.ext
00000000 31 31 31 20 61 62 63 0D   111 abc.
00000008 0A 0D 0A                  ...

file2.ext
00000000 53 65 63 6F 6E 64 20 66   Second f
00000008 69 6C 65 0D 0A            ile..

after concatenation result_file.ext contains contents of both files
00000000 31 31 31 20 61 62 63 0D   111 abc.
00000008 0A 0D 0A 53 65 63 6F 6E   ...Secon
00000010 64 20 66 69 6C 65 0D 0A   d file..