Link to home
Create AccountLog in
Avatar of vlsllp
vlsllp

asked on

Batch file that will move PDFs to corresponding folders

Hello,

Our financial institution is using a system that generates client PDFs in a specific format. For example, the system we use exports PDFs in location \\serverA\clientPDFs\ as this format:

1455-Douglas T Thompson-2013Archivek1Package.pdf
4785-Cheri Lockson-2013Archivek1Package.pdf
7899-Thomas Pete-2012Archivek1Package.pdf
etc... (we have hundreds of them waiting to be moved)

but all clients of different types are in 1 folder instead of its own assigned client folder.

I need a batch file that will migrate the clients above to its corresponding client ID. An example of its final result would be:

\\serverB\client\1455\1455-Douglas T Thompson-2013Archivek1Package.pdf\
\\serverB\client\4785\4785-Cheri Lockson-2013Archivek1Package.pdf\
\\serverB\client\7899\7899-Thomas Pete-2012Archivek1Package.pdf\


anything will help, thanks in advance!
Avatar of dsacker
dsacker
Flag of United States of America image

Put this in a .bat file, and test it:
@echo off

for /f %%a in ('dir /b \\serverA\clientPDFs\*.PDF') do (
    call:MoveThisFile %%a
)
goto:EOF

:MoveThisFile

    set file=%1
    set node=%file:~0,4%

    rem Comment out the following two lines when you're ready to run this for real

    echo if not exist \\serverB\client\%node% mkdir \\serverB\client\%node%
    echo move \\serverA\clientPDFs\%file% \\serverB\client\%node%\.

    rem Remove the "rem" comments from these next two lines when you're ready to run this for real

    rem    if not exist \\serverB\client\%node% mkdir \\serverB\client\%node%
    rem    move \\serverA\clientPDFs\%file% \\serverB\client\%node%\.

    goto:EOF

Open in new window

Try this:

@echo off
for %%a in (*.pdf) do (call :DoIT %%a)
goto :EOF

:DoIt
echo.
set IDA=%1
set ID=%IDA:~0,4%
md %ID%	
move "%1" %ID%
)

Open in new window

Avatar of vlsllp
vlsllp

ASKER

We appreciate the quick reply!

i tried inputting your code into a .bat file,

Prior testing this on my server I created 2 folders on my desktop: "%USERPROFILES\Desktop\serverA\" and "%USERPROFILES\Desktop\serverB\

 here's what I have so far, but didn't seem to work. thanks again

@echo off

for /f %%a in ('dir /b %USERPROFILE%\Desktop\serverA\*.PDF') do (
    call:MoveThisFile %%a
)
goto:EOF

:MoveThisFile

    set file=%1
    set node=%file:~0,4%

    rem Comment out the following two lines when you're ready to run this for real

    echo if not exist %USERPROFILE%\Desktop\serverB\%node% mkdir %USERPROFILE%\Desktop\serverB\%node%
    echo move %USERPROFILE%\Desktop\serverA\%file% %USERPROFILE%\Desktop\serverB\%node%\.

    rem Remove the "rem" comments from these next two lines when you're ready to run this for real

    if not exist %USERPROFILE%\Desktop\serverB\%node% mkdir %USERPROFILE%\Desktop\serverB\%node%
    move %USERPROFILE%\Desktop\serverA\%file% %USERPROFILE%\Desktop\serverB\%node%\.

    goto:EOF
What kind of error message(s) did you get?
SOLUTION
Avatar of Eirman
Eirman
Flag of Ireland image

Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
See answer
Maybe you need to wrap these in quotes?
%USERPROFILE%\Desktop\serverB\%node%
%USERPROFILE%\Desktop\serverA\%file%

Open in new window

i.e.
"%USERPROFILE%\Desktop\serverB\%node%"
"%USERPROFILE%\Desktop\serverA\%file%"

Open in new window


Also, does that ending "." need to be removed?
move \\serverA\clientPDFs\%file% \\serverB\client\%node%\.

Open in new window

ASKER CERTIFIED SOLUTION
Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
FYI, vlsllp, I changed the code a little (above), adding double-quotes in case of any spaces and adding error checking. I tested it with files I created,and it seems to work okay.