BAT文件:从文本文件读取,然后执行某些操作

时间:2018-08-19 18:25:40

标签: batch-file cmd

我是BAT / CMD编程的新手。

我在文件目录“ C:\ Custom_BATS \ Audio_Swap \ CurrentDevice.txt”中有一个名为“ CurrentDevice”的文件

在此文件中,它会显示“ Speakers”或“ Headphones”。

我希望我的BAT文件打开文本文件并遵循下面的伪代码

  • 如果文字==“扬声器”
  • nircmd setdefaultsounddevice“耳机” 1
  • 将文本替换为“耳机”
  • 保存并关闭文件
  • 否则,如果文本==“ Headphones”

  • nircmd setdefaultsounddevice“扬声器” 1
  • 将文本替换为“扬声器”
  • 保存并关闭文件

我认为这很简单,但是我在网上找到很多行话感到吃力。

到目前为止,这是我的代码

"C:\Custom_BATS\Audio_Swap\CurrentDevice.txt" set /p text=

if "%var%"=="Headphones"
(
nircmd setdefaultsounddevice "Speakers" 1
"C:\Custom_BATS\Audio_Swap\CurrentDevice.txt" echo Speakers
)

else if "%var%"=="Speakers"
(
nircmd setdefaultsounddevice "Headphones" 1
"C:\Custom_BATS\Audio_Swap\CurrentDevice.txt" echo Headphones
)

2 个答案:

答案 0 :(得分:1)

我的解决方案

@echo off
setlocal
set "text.1=Speakers"
set "text.0=Headphones"
if exist "%~dpn0.flag" (
set "text.0=%text.1%"
del /q "%~dpn0.flag"
) else type nul > "%~dpn0.flag"
nircmd setdefaultsounddevice "%text.0%" 1
endlocal

答案 1 :(得分:0)

非常接近:

<"C:\Custom_BATS\Audio_Swap\CurrentDevice.txt" set /p text=

if "%text%"=="Headphones" (
  nircmd setdefaultsounddevice "Speakers" 1
  >"C:\Custom_BATS\Audio_Swap\CurrentDevice.txt" echo Speakers
) else (
  nircmd setdefaultsounddevice "Headphones" 1
  >"C:\Custom_BATS\Audio_Swap\CurrentDevice.txt" echo Headphones
)

您只是错过了重定向<>并弄乱了if语法。