我想要在D:\TEST\ 下面刪除所有除了LIST.TXT的 TXT檔案
有找到類似以下的指令,但執行只會刪掉該目錄下的,而且LIST也會被刪除。
for %i in (D:\TEST\*.*) do if not "%%i"=="LIST.TXT" del /q "%i"
請教一下我要怎麼改寫比較好,謝謝。
.Bat
file.在 Win-Cmd (or 命令提示字元
) 內, 使用 for
命令時, for 參數
的語法為 %A
, 例如:
FOR %G IN (a0,b1,c2) DO @echo %G
在 .bat
(or .cmd
、 批次檔) 內, 使用 for
命令時, for 參數
的語法為 %%A
(註1), 例如:
FOR %%G IN (a0,b1,c2) DO @echo %%G
.bat
做語法剖析時, 在 .bat
內需要用 %%
來生成給 for 語句
使用的 %
。set /a "modulo=14%%3"
等。而你的 我想要在D:\TEST\ 下面刪除所有除了LIST.TXT的 TXT檔案
, 可參考 win895564大 在討論內提供的解答:
( 我小改了一下: 用 "
含括路徑; 用 @
做分段; 用 if /i
啟用大小寫無差別模式。 )
rem ## 這是給 .bat 檔案用:
for /R "D:\TEST\" %%G in (*.txt) do @if /i not "%%~nxG"=="LIST.TXT" @del "%%~G"
若是想在 Win-Cmd (or 命令提示字元
) 內直接下命令,就要用下面寫法:
( 就只是把在 .bat
用的 %%
改以 %
取代。 )
rem ## 這是給 Win-Cmd 用:
for /R "D:\TEST\" %G in (*.txt) do @if /i not "%~nxG"=="LIST.TXT" @del "%~G"
你在 PowerShell 遇上的 錯誤: 檔案無法載入,因為這個系統上已停用指令碼執行。
, 大概 ( 因為你沒說你的情境, 所以用猜的~ ) 是因為 PowerShell 有一項安全功能: Execution policy / 執行原則, 這可控制 PowerShell 載入組態檔和執行腳本的條件。 此功能主要是用以降低執行惡意指令碼的風險。 你可在 PowerShell 用 Get-ExecutionPolicy -List
查詢此安全功能的目前設定。
若想要以後皆允許執行自己寫的 .PS1
, 一般可用 Set-ExecutionPolicy RemoteSigned
命令打開權限。
(Set-ExecutionPolicy
需要管理員權限。 其他細節請參閱 Set-ExecutionPolicy 。 )
如果有風險考量而只想要臨時的執行權限, 可參考 zero大 的建議, 呼叫一個具有臨時的執行權限之 powershell.exe
, 執行你的腳本:
## 執行腳本檔案:
powershell.exe -ExecutionPolicy RemoteSigned -Command '.\myScript.ps1'