Batch File

Hello could you please take a look at the batch file below and let me know why it's not working?    First part is suppose to create directories under all users and the second part is just copying the link to all users.  Does not seem to be working for me.  


@echo off

md "%USERPROFILE%\AppData\LocalLow" > nul 2>&1
md "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" > nul 2>&1

copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" > nul 2>&1
SDJ_1Asked:
Who is Participating?
 
pony10usConnect With a Mentor Commented:
@Qlemo

Thank you, I just looked at what I posted and was shocked at how poorly it was done.  I didn't even notice that I had done the same operation 3 times.  Guess I was just following what the author had.

@echo off

@For /F "tokens=1,2,3 delims=/ " %%A in ('Date /t') do @( 
 Set Day=%%A
 Set Month=%%B
 Set Year=%%C
 Set All=%%C%%B%%A
 )
 
REM  ***  Check for existance of folder - assumption that XXX is not a variable  ***

if not exist C:\XXXLogs\ mkdir C:\XXXLogs\

REM  *** If the file ClearJavaCache.txt exists rename it so that it appends the date at the end.  ***

if exist C:\XXXLogs\ClearJavaCache.txt ren C:\XXXLogs\ClearJavaCache.txt C:\XXXLogs\ClearJavaCache%All%.txt

cd C:\Users

echo Started: %date% %time% > C:\XXXLogs\ClearJavaCache.txt

md "%USERPROFILE%\AppData\LocalLow" >> C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt

copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt

echo Ended: %date% %time% >> C:\XXXLogs\ClearJavaCache.txt

Exit

Open in new window


I agree that you don't need to put in the MD, it is really just the way I was taught many years ago and it's a hard habit to break.  :)

In fact, it does become almost a wasted step after the first time unless the folder gets removed for some reason.
0
 
pony10usCommented:
%USERPROFILE% refers to the currently logged on user and therefore will only apply the commands to that user's profile.
0
 
SDJ_1Author Commented:
Thanks for response.  This is how I set it up and it's doing what I need.

@echo off

cd C:\Users

md "%USERPROFILE%\AppData\LocalLow" > nul 2>&1
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" > nul 2>&1

md ""%USERPROFILE%\AppData\LocalLow" > nul 2>&1
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" > nul 2>&1

md ""%USERPROFILE%\AppData\LocalLow" > nul 2>&1
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" > nul 2>&1


copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" > nul 2>&1
copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" > nul 2>&1
copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" > nul 2>&1


Exit

Can you give me a suggestion on how I can 'echo' the results to a .txt flle in another directory?
0
Simplify Active Directory Administration

Administration of Active Directory does not have to be hard.  Too often what should be a simple task is made more difficult than it needs to be.The solution?  Hyena from SystemTools Software.  With ease-of-use as well as powerful importing and bulk updating capabilities.

 
pony10usCommented:
Create a folder in the root of C: (for example) called results. If you want the program to do it for you I would suggest doing an IF EXISTS, I can help with that if you need.



Anywhere you have:

 > nul 2>&1

change to:

>> c:\updates\results.txt

Except for the first time it appears.  Change that one to:

> c:\updates\results.txt
0
 
SDJ_1Author Commented:
Thanks.  Can you help me with the 'IF EXISTS'  option?    

The name of the the file I need the program to create is ClearJavaCache.txt and the location will be   C:\XXXLogs\
0
 
pony10usCommented:
Untested:

@echo off

@For /F "tokens=1,2,3 delims=/ " %%A in ('Date /t') do @( 
 Set Day=%%A
 Set Month=%%B
 Set Year=%%C
 Set All=%%C%%B%%A
 )
 
REM  ***  Check for existance of folder - assumption that XXX is not a variable  ***

if not exist C:\XXXLogs\ mkdir C:\XXXLogs\

REM  *** If the file ClearJavaCache.txt exists rename it so that it appends the date at the end.  ***

if exist C:\XXXLogs\ClearJavaCache.txt ren C:\XXXLogs\ClearJavaCache.txt C:\XXXLogs\ClearJavaCache%All%.txt

cd C:\Users

md "%USERPROFILE%\AppData\LocalLow" > C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt

md ""%USERPROFILE%\AppData\LocalLow" >> C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt

md ""%USERPROFILE%\AppData\LocalLow" >> C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt


copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt
copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt
copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt


Exit

Open in new window


I provided some code to keep versions of the C:\XXXLogs\ClearJavaCache.txt by appending the date at the end of the file name.  prior to creating a new one.  

This code makes some assumptions:

1. The program only runs once per day
2. You realize that the date appended would be the day AFTER the file was created.
3. The XXX in the folder is not a variable
4. You will manually police the C:\XXXLogs folder and remove older files no longer needed

All of this can be handled however.

Always test in a non production environment and as usual, there are probably cleaner ways to accomplish what I have done.  :)
0
 
SDJ_1Author Commented:
ok thanks.  is there a way to change the wording in the .txt file to something like. "Script Complete?   And\or can it show date & time script started and ended?    Think I'm making this to complicated for myself.
0
 
pony10usCommented:
Try this:


@echo off

@For /F "tokens=1,2,3 delims=/ " %%A in ('Date /t') do @( 
 Set Day=%%A
 Set Month=%%B
 Set Year=%%C
 Set All=%%C%%B%%A
 )
 
REM  ***  Check for existance of folder - assumption that XXX is not a variable  ***

if not exist C:\XXXLogs\ mkdir C:\XXXLogs\

REM  *** If the file ClearJavaCache.txt exists rename it so that it appends the date at the end.  ***

if exist C:\XXXLogs\ClearJavaCache.txt ren C:\XXXLogs\ClearJavaCache.txt C:\XXXLogs\ClearJavaCache%All%.txt

cd C:\Users

echo Started: %date% %time% > C:\XXXLogs\ClearJavaCache.txt

md "%USERPROFILE%\AppData\LocalLow" >> C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt

md ""%USERPROFILE%\AppData\LocalLow" >> C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt

md ""%USERPROFILE%\AppData\LocalLow" >> C:\XXXLogs\ClearJavaCache.txt
md ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" >> C:\XXXLogs\ClearJavaCache.txt


copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt
copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt
copy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" ""%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt

echo Ended: %date% %time% >> C:\XXXLogs\ClearJavaCache.txt

Exit

Open in new window



Added the two "echo" lines to provide date/time start/end
0
 
SDJ_1Author Commented:
Good aftenoon, thanks for all your help with this!
0
 
QlemoDeveloperCommented:
You are doing the same operations three times? And using "" (doubled double quote) doesn't make sense.
You are also creating the LocalLow folder (why), but create and use Roaming (which is correct).

If you just use
xcopy /y "D:\Program Files\ClearJavaCache\Clear Java Cache.lnk" "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" >> C:\XXXLogs\ClearJavaCache.txt

Open in new window

the Start Menu folder (and the whole path) will be created if necessary, so no MD needed.
0
All Courses

From novice to tech pro — start learning today.