I have a simple batch script which transfers a file filename to a remote location destination using SCP.
Using scp filename destination works perfectly fine, however adding variable var doesn't work.
Code snippet:
set /p "var=filename"
echo %var%
echo scp "%var%" destination
scp "%var%" destination
Results:
filename
scp "" destination
: not a regular file
The variable is not used or recognized by the second echo and scp.
Is there something I'm missing from using the variable properly in echo and scp?
Note: Code snippet is in an if statement
Solution:
Need to use delayexpansion, and use !var! instead of%var%
See here: windows batch SET inside IF not working
CodePudding user response:
There is no problem with the snippet you posted.
But these lines will fail in the way you describe if these lines are within a parenthesized codeblock.
If this is the case then you must change the code to use delayed expansion.
See setlocal/? and set/? for details and documentation.
