Why can't my batch script create .txt files when elevated? - file

This is pretty weird. I have a simple batch script:
#echo off
#echo test> text.txt
When I run it without elevated permissions it creates "text.txt", which contains "test" inside it.
However when I run the same batch file WITH elevated permissions it does nothing. Why?

when you run in with elevated permissions, it cd to C:\WINDOWS\system32 so you need to cd earlier in your script
#echo off
cd C:\path\where\you\want\to\create\your\file
#echo test> text.txt
you can also do this if you want the file to be created in the folder the batch is in
#echo off
cd %~dp0
#echo test> text.txt

Try this one
#echo off
echo.
cd N:\myfolder
N:
echo hi>>123.txt

Related

CMD/FTP to create folder using to today date & connect ftp download into created folder

I'm new to this cmd/FTP command. I would like to create a new folder at my local directory using today's date and connect to FTP to download the specific file to the newly created folder. If I manually type in command one by one at cmd, it has no issue. But when I use a batch file to run, my command stopped at FTP.
setlocal enableextensions
set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4"_"job%
mkdir C:\%name%
cd C:\%name%
ftp
open 192.168.31.93
*user*
*password*
binary
cd *directory*
mget -i *.*
I did try to separate my command to two batches;
1. folder creation
2. FTP download but the file downloaded didn't go into the folder I created. the downloaded file went to C:\Document & Settings.
main batch file
#echo off
call rename.bat
ftp -i -s:ftp.txt
rename.bat
setlocal enableextensions
set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"_job"
mkdir c:\%name%
cd c:\%name%
ftp.txt
open 192.168.31.93
*user*
*password*
binary
cd *directory*
mget *.*
close
Another method I try is using '!' when in FTP environment, then create a folder then exit back to FTP environment. This method again doesn't work with the batch file. Please help
It seems that with command extensions enabled, the working directory set by a child batch file is lost, then the batch file exits.
I'm not sure how to solve it, but you actually do not need the rename.bat file to be a separate file. This "main batch file" should work:
#echo off
setlocal enableextensions
set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"_job"
mkdir c:\%name%
cd /d c:\%name%
ftp -i "-s:%~dp0\ftp.txt"
Also note the /d added to cd. Without that your batch will not work when started from another drive. You also have to use %~dp0 to refer to the batch file folder for the ftp.txt. As at the time ftp is called, you have changed to the target directory.
You possibly do not even need the command extensions to be enabled. So simply removing the setlocal enableextensions might solve the problem too. Though you still need the %~dp0 and /d.
I've decided to post this, although similar to the answer given, there are a couple of differences.
It creates the text file, then deletes it, (this keeps everything more portable).
I have corrected your directory name, (because of a typo).
#Echo Off
Set "Name=%DATE%"
Set "Name=%Name:~-10,2%-%Name:~-7,2%-%Name:~-4%_job"
MD "C:\%Name%" 2>Nul
CD /D "C:\%Name%" || Exit /B
( Echo open 192.168.31.93
Echo *user*
Echo *password*
Echo binary
Echo cd *directory*
Echo mget *.*
Echo close
)>"ftp.txt"
FTP -i -s:ftp.txt
Del "ftp.txt" 2>Nul
Exit /B

Change logfile path with batch file

From the documentation of Unity you can change the logfile path by adding
-logFile <pathname>
I tried doing that with a batch file:
setlocal
cd /d %~dp0
Game.exe -batchmode -logFile<D:\Test\>
This just starts the Windows Command Prompt and nothing happens. Also i don't know how to change the <pathname> of the -logfile so that it uses the path of the batch file.
Thanks to all your comments, i solved it today:
setlocal
cd /d "%~dp0"
Game.exe -logFile ./Logs/output_log.txt
this is working fine for me.

all the commands are not getting executed in bat file?

after the startup.bat command I wanted to start chrome with url: http://localhost:8080/Nexus but bat file getting stopped after tomcat is being started up.
Code in the batch file is as follows:
#echo off
start cmd
cd I:\Users\5251966\Nexus
echo yes|copy catalina.bat I:\apache-tomcat-7.0.55-windows-x64\apache-tomcat-7.0.55\bin
echo yes|copy tomcat-users.xml I:\apache-tomcat-7.0.55-windows-x64\apache-tomcat-7.0.55\conf
cd I:\apache-tomcat-7.0.55-windows-x64\apache-tomcat-7.0.55\bin
startup.bat
start chrome http://localhost:8080/Nexus
Here's some example code for you:
#Echo Off
Set "srcDir=I:\Users\5251966\Nexus"
Set "dstDir=I:\apache-tomcat-7.0.55-windows-x64\apache-tomcat-7.0.55"
Copy /Y "%srcDir%\catalina.bat" "%dstDir%\bin"
Copy /Y "%srcDir%\tomcat-users.xml" "%dstDir%\conf"
CD /D "%dstDir%\bin"
Call "startup.bat"
Start chrome http://localhost:8080/Nexus
Use call to call other batch files from a batch file, otherwise your parent batch file terminates and won't run any more commands after invoking the child:
call startup.bat

Loop in directory using awk script that can be running using cmd line

I want to do some loop on files inside subfolders using awk script that I'm running it from cmd line script.
I'm using this code inside my cmd:
for /r %%I in (*.txt) do awk -f D:\Main\command.awk %%~fI
pause
But I have these error rise:
'awk' is not recognized as an internal or external command, operable
program or batch file.
But when I write it down manually on cmd line, it works just fine.
Does anyone know what is wrong with this?
Thank you.
Regards,
Bams
Sorry for late update.
Here's the code that I made in cmd script.
#echo off
pushd "%~dp0"
for /r %%I in (*.txt) do C:\Progra~2\GnuWin32\bin\awk -f command.awk %%~fI >> result.csv
pause
and it works, so basically I notice the error was about working directory.

create a folder name variable dos command

i want to create a batch file
#echo off
set /p name="Type folder name(s):
md %name%
cd p:\%name%
all lines work, but i cannot change the directiory to cd p:\%name% when i run the script
thank you.
You need cd /d to change to a directory on another drive:
cd /d p:\%name%

Resources