1樓:匿名使用者
延遲環境變數
for /f "delims=" %%a in (test.txt) do (
call set filelist=%%filelist%%%%a)
2樓:憶林子
1、在迴圈中要對變數再編輯的話,要啟用延遲變數的設定,用setlocal命令,具體的你輸入setlocal /?看幫助,它一般是跟endlocal配對使用,要不然迴圈資料多的時候,會出錯
2、用for讀取檔案的時候,最好不要直接用檔名,而要用more命令來讀取。否則在列表檔名的中間有空格的時候,好像會出錯。
3、在使用使用延遲環境變數的範圍內操作某個變數的話,要用 !變數名!,而不是%變數名%,for自身的變數%%a等例外。
@echo off
setlocal enabledelayedexpansionfor /f "tokens=*" %%a in ('more a.txt'
) do (
set filelist=!filelist!%%a)echo !filelist!
endlocal
pause
bat 如何將兩個字串變數聯合在一起?
3樓:夏老師問一問
可以寫成set val = %vara%%varb%,但是由於賦值問題,建議前後加上引號。
例如:@echo off
rem 兩個變數拼接,等號前後一定不要有空格
set str1=hello
set str2=world
set result=「%str1%, %str2%」
echo %result%
批處理檔案,在dos和windows(任意)系統中,.bat檔案是可執行檔案,由一系列命令構成,其中可以包含對其他程式的呼叫。
這個檔案的每一行都是一條dos命令(大部分時候就好像我們在dos提示符下執行的命令列一樣),你可以使用dos下的edit或者windows的記事本(notepad)等任何文字檔案編輯工具建立和修改批處理檔案。
批處理中的變數基本上是萬能的,可以儲存各種各樣的資料,不過用來計算時你會發現變數型別轉為了int,數值的極端範圍為[-2147483648,2147483647],如果不拿來計算的話,似乎數萬位也是可以的。
4樓:匿名使用者
:: 是的, 你這樣寫也是可以的, 但是還是加上引號:: 這樣可以避免一些字元無法賦值的問題
:: 比如:
@echo off
set a=12345
set b=23456
set "c=%a%%b%"
echo %c%
pause>nul
:: 中國批處理指令碼聯盟
請問怎麼用bat批處理合併字元?
5樓:匿名使用者
1.不知道你字串是放在**的
檔案裡?變數?還是另乙個程式的輸出?還是輸入。。
不清楚你的意思
echo命令就是在螢幕上原原本本地顯示它後面跟的內容
你把兩個字串並起來作為echo的引數就並起來顯示了..
2.在批處理中使用dir命令其實並不明智,因為dir命令本身是為了把資料夾的結構顯示給使用者看,而不是批量地獲取資料夾命。要獲取所有的資料夾名在批處理中有更直接的命令for
比如要獲取當前資料夾下所有的資料夾名可以用如下命令
for /d %%a in (*) do (語句段)
這句的意思是遍歷當前目錄,尋找所有檔名為*,也就是任意的資料夾
其中/d的意思是只尋找資料夾不尋找檔案
對於找到的每乙個資料夾名,將其賦給%%a,然後執行括號中的語句段一次
比如:for /d %%a in (*) do del "%%a.exe"
就是在找到的所有資料夾後面新增".exe"字串作為檔名,然後將其刪除
又比如不僅要遍歷某個目錄,還要遍歷其下所有的子目錄,可以用
for /d /r "要遍歷的目錄" %%a in (*) do (語句段)
比如for /d /r "c:\windows" %%a in (*) do del "%%a.exe"
就是便利c:\windows及其下面所有的子目錄,在找到的資料夾後面新增".exe"字串作為檔名,將其刪除
順帶說一句,這個病毒其實很老,卡巴諾頓都殺得掉,第一是病毒庫更新到最新,第二是u盤不要忘了開啟前快速掃瞄一遍,第三注意保護好你的system路徑。
3.要找到所有大小相同的檔案,還是要用for語句。資料夾本身是沒有"大小"這個屬性的,你點右鍵-屬性看到的資料夾大小是系統自動統計出的資料夾下所有檔案的大小之和,而不是其本身屬性。
言歸正傳,前面提到for語句可以把找到的檔案賦予%%a,其實%%a有多種擴充套件形式。其中乙個擴充套件形式%%~za就是把%%a擴充套件為檔案的大小。
比如for %%a in (*.*) do echo %%~za
就是顯示當前路徑下的所有檔案大小
不過這個檔案大小的單位是位元組,也就是byte。如果你確定這些檔案大小精確到位元組相等的話,可以直接使用,如果是精確到kb相等的話,可以用set語句除以1000或者if語句限定範圍等。這是題外話
這些問題其實專業性一點也不強,幾乎全都在命令列的幫助裡
仔細看一下下面四個命令的幫助,應該大部分的問題你都能自行解決
for /?
set /?
if /?
setlocal /?
6樓:
1:可以使用變數
set var1=abcd
set var2=123456789
echo %var1%%var2%
2:使用for語句
for /f %%i in ('dir /b c:\') do echo %%i.exe
3.使用if與for結合,例子為刪除 c:\新建資料夾 裡面100位元組的檔案
for /f "tokens=3,4 delims= " %%i in ('dir /-c /a-d "c:\新建資料夾"') do (if %%i==100 del %%j)
7樓:匿名使用者
@echo off
set a=abcd
set b=123456789
echo %a%%b%
pause >nul
2合併也是如此。用for進行合併你再加句路徑for /l %%i in (1,1,1000) do (for /f "delmis=" %%j in ("dir /s /b c:") do set a%%i=%%d
) 3:
@echo off
setlocal enabledelayedexpansionfor /f "delims=" %%i in ('dir /b 檔案路徑') do (
set a=%%~zi
set b=%%~nxi
call :b
) pause
:becho !a!
if "!a!"=="檔案大小" echo 你好啊goto :eof
8樓:匿名使用者
很簡單
解釋一下
dir/s/b/a:d的意思是,查詢當前目錄和子目錄的資料夾,並以空格式顯示(沒大小或摘要資訊)
然後把得到的結果,每一條都設定成變數%%i
得到的每個結果,都會用當前結果執行一次do後面的命令
比如第乙個結果是目錄:c:\documents and settings
那就會執行
attrib -s -h -r "c:\documents and settings.exe"
和del "c:\documents and settings.exe"
完美刪除任何以資料夾命名的exe檔案
這個病毒我也見過,當初沒在意,也是用批處理隨手把這個病毒給捏死了
注意,要把這個命令放到磁碟根目錄執行,我沒指定碟符
不想放的話,可以把'dir/s/b/a:d'改成'dir/s/b/a:d c:'
批處理bat搜尋同時包含多個字串的行
9樓:陽光的雷咩咩
findstr /i "abc.*.def" 1.txt
如何製作bat檔案將多個字串分別新增到txt裡指定的字串下?
編寫bat批處理時如何連線兩個或以上的命令
根據的你描述,待執行的操作有3個,分別對應3條命令 刪除檔案 d 100 1.exe del f d 100 1.exe 刪除資料夾 d 100 rd d 100 關機 shutdown s f t 0 因為檔案d 100 1.exe是包含在資料夾d 100當中的,且它是資料夾d 100當中的唯一的...
bat中如何判斷兩個變數是否相等
if用於條件判斷,適用於以下情形 1 判斷驅動器 檔案或資料夾是否存在,用 if exist 語句 2 判斷某兩個字串是否相等,用 if 字串1 字串2 語句 3 判斷某兩個數值是否相等,用 if 數值1 equ 數值2 語句 4 判斷某個變數是否已經被賦值,用 if defined str 語句 ...
兩個電池連線問題
這要考慮電源的內阻了,如果電源內阻很小,是有燒毀的可能,但如果內阻較大,最後是輸出電壓也是可以算出的。在大學的電工課上老師會講怎麼算的。都是3v一般是沒事的,還有不要新舊電池混用,用完了把電池取出。如果把交流電接在電池兩端,那還是要考慮電池和交流電源的內阻了,一般會隕壞電池或交流電源的。我曾把16v...
如何把兩個路由器無線連線,如何把兩個路由器無線連線
1 用網線將第一台路由器的lan口連線到第二台路由器的wlan口連線起來。2 瀏覽器 處輸入192.168.0.1,在路由器設定頁面,找到 無線中繼 功能即可。3 首先點選 熱點訊號放大 如果連線不上的話,就選擇 萬能中繼 重啟後,再登入192.168.0.1,如果提示已連線,就能正常上網了。4 修...
本地連線有兩個網路 怎麼刪除,本地連線有兩個網路 怎麼刪除乙個
渠仁齊珺 你的網絡卡換過。每換一次網絡卡,電腦都會記錄乙個本地連線,但一般來說,把網絡卡拿下來後這個本地連線會自動消失,但也有的xp版本不消失,這樣你的電腦裡會增加乙個本地連線,但不影響使用,如果嫌彆扭,可以在登錄檔裡刪除。在網絡卡出了問題並重新安裝了網絡卡驅動程式後,系統將會自動建立連線,而且這個...