Robocopy: not deleting folders containing excluded files - robocopy

I want to mirror two folders, but to exclude certain file types (e.g. js files). I can do that with /XF option.
The problem I run into is that if there is a folder Foo with js file in Destination folder, but there is no Foo folder in Source folder - robocopy command bellow deletes the Foo folder on the destination side together with the js files in it.
Robocopy.exe d:\Source d:\Destination /E /PURGE /XF *.js /COPYALL /FFT
What I would like is to exclude from deliting folders that contain excluded files.

You can't. If you apply /PURGE it will delete, it will delete any file/folder that doesn't exist in your source folder.
If you need to maintain that folder, you need to create that folder in the source and remove the /PURGE switch.
Robocopy.exe d:\Source d:\Destination /E /XF *.js /COPYALL /FFT

Related

Robocopy Error 64 (0x00000040) when copy specific file extensions to SharePoint

i am using a Windows 10 64bit laptop to copy a bunch of folder and files to a SharePoint folder.
My Script is running in PowerShell.
If i try to copy the files and folders with the explorer (strg+c and strg+v) everything except .exe files are copying.
.exe files are blocked from the server.
If Robocopy is trying to copy the same set of folders and files:
First i use: Get-Credential
then: Connect-PnPOnline
and then copying with Robocopy.
If i copy the complete bunch of the folder i use following code:
ROBOCOPY $orgPath $newPath /MIR /dcopy:DAT /copy:DAT /r:0 /w:1
Robocopy is then working with this options:
*.* /S /E /DCOPY:DAT /COPY:DAT /PURGE /MIR /R:0 /W:1
If i just copy single files i use:
ROBOCOPY $orgPath $newPath $fileName /dcopy:DAT /copy:DAT /r:0 /w:1
Robocopy is then working with this options:
/DCOPY:DAT /COPY:DAT /R:0 /W:1
$orgPath = the path of the folder i want to copy (local or network drive)
$newPath = the path of the folder where i want to copy to (SharePoint)
$fileName = the file i want to copy
I just copy if the folder/file is not existing already.
With both versions i get the same result.
This is working fine. Robocopy is copying.
The folders and the most files (.xmlx .txt) are copying
The .exe files get the error 222 because the server is blocking this file. That is normal and i understand why he is doing it.
BUT:
.pdf files do not copy with robocopy. This files gives the error 64 (0x00000040).
So the server is not blocking this file. (i also can copy this file using the explorer) but all the .pdf files getting this error using robocopy.
But of course the connection is still working. robocopy is still copying further the .xmlx and .txt files.
The error is relating to the extension.
But i do not know why and i do not know how to solve the problem.
The Name of the .pdf files do not have any special caracters.
Does anyone can help me to fix the problem?
Thanks in advance
With best regards
Matze

Command Line Copy or Delete

I used robocopy to copy just pdf's from an external hard drive and place them on our server.
source destination *.pdf
It copied over all the folders and subfolders even if there wasn't a .pdf file in the folder. Can someone help me either....
a) Delete empty folders or b) Copy over only folders and subfolders that have .pdf's in them?
Thank you!
Use the following command for copy over only folders and subfolders that have an extension in them in this case ".pdf"
ROBOCOPY sourcePath destPath *.pdf /MIR /S
This will only all files with that extensions and folders that have files with that extension and does not include empty folder.
Try using this ROBOCOPY command for deleting empty folders:
ROBOCOPY myfolder myfolder /S /MOVE
Here source and destination both are 'myfolder'.

How can I use robocopy to exclude files with multiple periods using wildcards?

I have multiple config files that I need to copy to a destination directory. Some of these files have multiple extensions like the following:
web.config.env1
web.config.env2
web.config.something
I also have files that just simply end in ".config". I'd like to use Robocopy to copy all files in a directory plus the ".config" files while excluding any ".config.*" files.
So I tried the following in powershell:
robocopy $SourceDir $DestinationDir "*.*" /L /XF "*.config.*"
However, if I try to exclude anything matching "*.config.*" it also excludes all configuration files that end with only with "*.config". How should I go about excluding the config files with additional extensions while copying all others?

robocopy /MIR - don't delete desktop.ini in destination

I want to sync folders between two computers, one with XP and one with Vista. I want the two folders mirrored, except for security settings and folder settings. It is my understanding that /MIR switch will delete any 'extra' files in the destination folder, which would include the desktop.ini files. I can avoid copying desktop.ini files with /XA:SH How can I prevent robocopy from deleting the destination desktop.ini files?
If I have to do any extra scripting, I prefer PowerShell. But I hope robocopy can do it on its own.
Thanks.
/XF desktop.ini
Will exclude Desktop.ini (from copy or purge).
Replace the /MIR switch with /E, and don't use the /PURGE parameter.
Explanation: /MIR is the equivalent of using /E /PURGE, so by using /E without /PURGE, you achieve the results you desire.
Create a bat file so you can mirror the source at the destination and later once the mirror process is finish erase the files you desired.
For example:
robocopy SOURCE DEST /E /PURGE or /MIR or /E
command to erase recursively (test the command before running at production):
del /s DRIVe:\DESTINATION\desktop.ini
Hope this helps,
Luis

Robocopy copy contents of current folder

How would you translate this xcopy command into Robocopy:
xcopy *.* "C:\DestinationFolder\"
Keeping in mind that the current folder where the command is run changes dynamically (and hence the source folder is unknown in advance).
Thanks.
robocopy . "c:\dest"
Note you don't need to specify a wildcard in robocopy, by default it copies everything unless you use the /xf /xd flags to exclude certain files.
Robocopy DOES support wildcards.
You're expecting > robocopy SOURCE DEST but type > robocopy *.txt c:\folderdest\ to copy the current folder. If you look at the output from robocopy it will show "Files : *.txt" and "Source = c:\folderdest"
So in fact you can do > robocopy WILDCARD SOURCE DEST. If you want to use the CURRENT folder you need to use . (as has been mentioned here). So you would use > robocopy *.txt . c:\folderdest\.
Screenshot: http://i.stack.imgur.com/Xyxt4.png
As an addition:
If robocopy is started from an administrator console, the current folder "." will point to Windows\system32.
You can use the following commands at the top of your batch file to fix this:
#setlocal enableextensions
#cd /d "%~dp0"