[英]Windows command batch file calling variable from string in nested loop
I am trying to achieve this command in a batch file loop我正在尝试在批处理文件循环中实现此命令
md Documents
md Spreadsheets
md Medias
md Applications
md Archives
md Scripts
md Database
md Projects
md Tutorials
Cleaning Up documents清理文件
move *.pdf Documents
move *.doc* Documents
move *.ppt* Documents
move *.txt Documents
move *.draw* Documents
move *.msg* Documents
Cleaning Up Spreadsheets清理电子表格
move *.csv Spreadsheets
move *.xls* Spreadsheets
move *.xml* Spreadsheets
Cleaning Up Medias清理媒体
move *.psd Medias
move *.png Medias
move *.jp* Medias
move *.gif Medias
move *.tiff Medias
move *.mp* Medias
move *.avi Medias
Cleaning Up Applications清理应用程序
move *.exe Applications
move *.msi Applications
move *.iso Applications
move *.vsix Applications
Cleaning Up Archives清理档案
move *.zip Archives
move *.rar Archives
move *.7z Archives
move *.tar Archives
Cleaning Up Scripts清理脚本
move *.cs Scripts
move *.js Scripts
move *.css Scripts
Cleaning Up Database files清理数据库文件
move *.sql Database
move *.bak Database
move *.accdb Database
Trying to achieve same this as above using FOR loop and get extensions from inner loop from SET variables like Documents Spreadsheets etc.尝试使用 FOR 循环实现与上述相同的目的,并从文档电子表格等 SET 变量中获取内部循环的扩展。
Varirables变量
SETLOCAL
SET Folders=Documents Spreadsheets Medias Applications Archives Scripts Database
SET Documents=*.pdf *.doc* *.ppt* *.txt *.draw* *.msg*
SET Spreadsheets=*.csv *.xls *.xml
SET Medias=*.psd *.png *.jp* *.gif *.tif *.mp* *.avi *.mov
SET Applications=*.exe *.msi *.vsix *.iso
SET Archives=*.zip *.rar *.7z *.tar
SET Scripts=*.cs *.js *.css
SET Database=*.sql *.bak *.accdb
Loop环形
FOR %%f IN (%Folders%) DO
(
ECHO %%f
FOR %%e IN (%%%%f%%) DO (
ECHO %%e %%f
)
)
TIMEOUT /t 10
CLS
The output from the loop goes like this循环中的 output 如下所示
Documents
%Documents% Documents
Spreadsheets
%Spreadsheets% Spreadsheets
Medias
%Medias% Medias
Applications
%Applications% Applications
Archives
%Archives% Archives
Scripts
%Scripts% Scripts
Database
%Database% Database
You are quite close, but writing an explicit percent sign doesn't pay the bill.您非常接近,但写一个明确的百分号并不能支付账单。 Use delayed expansion instead:
改用延迟扩展:
@echo off
setlocal enabledelayedexpansion
SET Folders=Documents Spreadsheets Medias Applications Archives Scripts Database
SET Documents=*.pdf *.doc* *.ppt* *.txt *.draw* *.msg*
SET Spreadsheets=*.csv *.xls *.xml
SET Medias=*.psd *.png *.jp* *.gif *.tif *.mp* *.avi *.mov
SET Applications=*.exe *.msi *.vsix *.iso
SET Archives=*.zip *.rar *.7z *.tar
SET Scripts=*.cs *.js *.css
SET Database=*.sql *.bak *.accdb
FOR %%f IN (%Folders%) DO (
ECHO cleaning up %%f
FOR %%e IN (!%%f!) DO (
ECHO move "%%e" "%%f\"
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.