Solved

Explanation of variable with ~ syntax

Posted on 2011-02-25
6
369 Views
Last Modified: 2013-11-05
Hi
I got this batch script on the web for listing files with their sizes and there is one part I do not fully understand, so I was hoping someone could explain it to me
 @echo off
c:
cd\
set /A Total=0, Cnt=0
for /F "tokens=*" %%A in ('dir %1 /S /B /A-D') do call :show "%%A"
goto :EOF
:show
set "Size= %~z1"
echo %~f1 %~t1 %Size:~-10% >> c:\test\files.txt
goto :eof
PAUSE

The part I don't understand is in the 3rd last line of the script:
%Size:~-10%

Is the whole variable everything between the two % characters?
I understand that the %Size is the Size variable which is set to the file size in the previous line, but I don't understand what the :~10% bit is doing - so please advise

Thanks

0
Comment
Question by:Barry Cunney
6 Comments
 
LVL 11

Expert Comment

by:Patmac951
ID: 34984317
I think this link will give  you the answer  you are looking for:

http://stackoverflow.com/questions/112055/what-does-d0-mean-in-a-windows-batch-file
0
 
LVL 11

Expert Comment

by:Patmac951
ID: 34984328
This link is probably a little easier to understand, straight from Microsoft.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
0
 
LVL 32

Assisted Solution

by:it_saige
it_saige earned 100 total points
ID: 34984458
%~ is an expanding charactor.

%~n expands or add's too something, i.e.

%~1 - Expands %1 removing any surrounding quotes
%~f1 - Expands %1 to a fully qualified path name

In the above, your script uses

%~z1 which Expands %1 to the size of the file.
%~f1 which Expands %1 to a fully qualified path name.
%~t1 which Expands %1 to the date/time of the file.
%Size:~-10% adds 10 charactors to the front of the Size variable.  Like an align right if you will.

http://www.dostips.com/DtTipsStringManipulation.php

HTH,

-saige-
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 17

Author Comment

by:Barry Cunney
ID: 34984557
I was looking at these links earlier but I could not see any explicit explanation for the :~-10%
 syntax or even for ~- - maybe you can point it out to me in case I am missing something?
0
 
LVL 17

Author Comment

by:Barry Cunney
ID: 34984570
Thanks it_saige - my previous cpmment was for patmacs links not yours - I am looking in to more details what you posetdd now but it looks good
0
 
LVL 68

Accepted Solution

by:
Qlemo earned 150 total points
ID: 34984712
Correction to it_saige's post:

   %Size:~-10% adds 10 charactors to the front of the Size variable.  Like an align right if you will.

That is not correct. %Size:~-10% just starts ten positions from the right of %Size%.
%A:~pos,len%    results in the substring starting at (null-based) position pos, having length len. Negative positions will count from the right instead of the left.
set A=1234567890
echo %A:~1,1%    echoes  2
echo %A:~-2%     echoes   90

To get a explanation, you don't need a link, just call
  set /?
   for /?

in a DOS prompt and you will see all "substitution" variants.
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

This Windows batch file is useful for organizing image files from a digital camera or other source, but can have many other uses.  It simply renames the file(s) to match their create date.  For example, if you took a picture today at 1:40pm and the …
Utilizing an array to gracefully append to a list of EmailAddresses
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now