List specific files from a directory












2















I can't list a specific files of a directory passed as argument to a batch file.



The problem I am facing is that the pipe "|" character is not recognized, I used it to circumvent the dir command limitations that it can



dir /b *.avi *.mp4 *.mkv


within a directory, but as I am creating this batch file to execute after uTorrent, I need to pass the directory as argument.



Globally, what I am trying to do is to automatically convert files downloaded by uTorrent to AAC audio.



Here's the batch files content:



FOR /F "tokens=*" %%i IN ('dir %1 /b /A-D | findstr /I (avi mp4 mkv)') DO ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni_aac%%~xi" 
PAUSE









share|improve this question





























    2















    I can't list a specific files of a directory passed as argument to a batch file.



    The problem I am facing is that the pipe "|" character is not recognized, I used it to circumvent the dir command limitations that it can



    dir /b *.avi *.mp4 *.mkv


    within a directory, but as I am creating this batch file to execute after uTorrent, I need to pass the directory as argument.



    Globally, what I am trying to do is to automatically convert files downloaded by uTorrent to AAC audio.



    Here's the batch files content:



    FOR /F "tokens=*" %%i IN ('dir %1 /b /A-D | findstr /I (avi mp4 mkv)') DO ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni_aac%%~xi" 
    PAUSE









    share|improve this question



























      2












      2








      2








      I can't list a specific files of a directory passed as argument to a batch file.



      The problem I am facing is that the pipe "|" character is not recognized, I used it to circumvent the dir command limitations that it can



      dir /b *.avi *.mp4 *.mkv


      within a directory, but as I am creating this batch file to execute after uTorrent, I need to pass the directory as argument.



      Globally, what I am trying to do is to automatically convert files downloaded by uTorrent to AAC audio.



      Here's the batch files content:



      FOR /F "tokens=*" %%i IN ('dir %1 /b /A-D | findstr /I (avi mp4 mkv)') DO ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni_aac%%~xi" 
      PAUSE









      share|improve this question
















      I can't list a specific files of a directory passed as argument to a batch file.



      The problem I am facing is that the pipe "|" character is not recognized, I used it to circumvent the dir command limitations that it can



      dir /b *.avi *.mp4 *.mkv


      within a directory, but as I am creating this batch file to execute after uTorrent, I need to pass the directory as argument.



      Globally, what I am trying to do is to automatically convert files downloaded by uTorrent to AAC audio.



      Here's the batch files content:



      FOR /F "tokens=*" %%i IN ('dir %1 /b /A-D | findstr /I (avi mp4 mkv)') DO ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni_aac%%~xi" 
      PAUSE






      windows command-line ffmpeg batch utorrent






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 2 at 8:15









      slhck

      161k47446468




      161k47446468










      asked Jan 1 at 20:58









      AlexandreGAlexandreG

      114




      114






















          1 Answer
          1






          active

          oldest

          votes


















          1














          The pipe | character is not recognized



          You would need to escape it as follows:



          ^|


          There are some additional errors in your code:




          • Piping to findstr /I (avi mp4 mkv) doesn't work as findstr doesn't work that way. You don't need findstr or piping anyway.


          • If it did work you would have to also escape ( and ).


          • "%%~di%%~pi%%~ni_aac%%~xi" doesn't give the output file the extension .acc



          Try the following:



          pushd %1
          FOR /F "usebackq tokens=*" %%i IN (`dir /b *.avi *.mp4 *.mkv`) DO (
          echo ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni.aac"
          )
          PAUSE
          popd


          Remove the echo if you are happy with the modified ffmpeg command.




          ^ Escape character.



          Adding the escape character before a command symbol allows it to be
          treated as ordinary text.



          When piping or redirecting any of these characters you should prefix
          with the escape character: & < > ^ |



          eg ^ ^& ^| ^> ^< ^^




          Source Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com





          Further Reading




          • An A-Z Index of the Windows CMD command line | SS64.com

          • Windows CMD Commands (categorized) - Windows CMD - SS64.com

          • For - Loop through command output - Windows CMD - SS64.com

          • Pushd - change directory/folder - Windows CMD - SS64.com

          • Popd - Windows CMD - SS64.com


          • Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com



          PAUSE






          share|improve this answer


























          • No, it does not work: it says ') was expected

            – AlexandreG
            Jan 1 at 21:55













          • Answer updated.

            – DavidPostill
            Jan 1 at 22:17











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "3"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1389602%2flist-specific-files-from-a-directory%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          The pipe | character is not recognized



          You would need to escape it as follows:



          ^|


          There are some additional errors in your code:




          • Piping to findstr /I (avi mp4 mkv) doesn't work as findstr doesn't work that way. You don't need findstr or piping anyway.


          • If it did work you would have to also escape ( and ).


          • "%%~di%%~pi%%~ni_aac%%~xi" doesn't give the output file the extension .acc



          Try the following:



          pushd %1
          FOR /F "usebackq tokens=*" %%i IN (`dir /b *.avi *.mp4 *.mkv`) DO (
          echo ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni.aac"
          )
          PAUSE
          popd


          Remove the echo if you are happy with the modified ffmpeg command.




          ^ Escape character.



          Adding the escape character before a command symbol allows it to be
          treated as ordinary text.



          When piping or redirecting any of these characters you should prefix
          with the escape character: & < > ^ |



          eg ^ ^& ^| ^> ^< ^^




          Source Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com





          Further Reading




          • An A-Z Index of the Windows CMD command line | SS64.com

          • Windows CMD Commands (categorized) - Windows CMD - SS64.com

          • For - Loop through command output - Windows CMD - SS64.com

          • Pushd - change directory/folder - Windows CMD - SS64.com

          • Popd - Windows CMD - SS64.com


          • Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com



          PAUSE






          share|improve this answer


























          • No, it does not work: it says ') was expected

            – AlexandreG
            Jan 1 at 21:55













          • Answer updated.

            – DavidPostill
            Jan 1 at 22:17
















          1














          The pipe | character is not recognized



          You would need to escape it as follows:



          ^|


          There are some additional errors in your code:




          • Piping to findstr /I (avi mp4 mkv) doesn't work as findstr doesn't work that way. You don't need findstr or piping anyway.


          • If it did work you would have to also escape ( and ).


          • "%%~di%%~pi%%~ni_aac%%~xi" doesn't give the output file the extension .acc



          Try the following:



          pushd %1
          FOR /F "usebackq tokens=*" %%i IN (`dir /b *.avi *.mp4 *.mkv`) DO (
          echo ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni.aac"
          )
          PAUSE
          popd


          Remove the echo if you are happy with the modified ffmpeg command.




          ^ Escape character.



          Adding the escape character before a command symbol allows it to be
          treated as ordinary text.



          When piping or redirecting any of these characters you should prefix
          with the escape character: & < > ^ |



          eg ^ ^& ^| ^> ^< ^^




          Source Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com





          Further Reading




          • An A-Z Index of the Windows CMD command line | SS64.com

          • Windows CMD Commands (categorized) - Windows CMD - SS64.com

          • For - Loop through command output - Windows CMD - SS64.com

          • Pushd - change directory/folder - Windows CMD - SS64.com

          • Popd - Windows CMD - SS64.com


          • Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com



          PAUSE






          share|improve this answer


























          • No, it does not work: it says ') was expected

            – AlexandreG
            Jan 1 at 21:55













          • Answer updated.

            – DavidPostill
            Jan 1 at 22:17














          1












          1








          1







          The pipe | character is not recognized



          You would need to escape it as follows:



          ^|


          There are some additional errors in your code:




          • Piping to findstr /I (avi mp4 mkv) doesn't work as findstr doesn't work that way. You don't need findstr or piping anyway.


          • If it did work you would have to also escape ( and ).


          • "%%~di%%~pi%%~ni_aac%%~xi" doesn't give the output file the extension .acc



          Try the following:



          pushd %1
          FOR /F "usebackq tokens=*" %%i IN (`dir /b *.avi *.mp4 *.mkv`) DO (
          echo ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni.aac"
          )
          PAUSE
          popd


          Remove the echo if you are happy with the modified ffmpeg command.




          ^ Escape character.



          Adding the escape character before a command symbol allows it to be
          treated as ordinary text.



          When piping or redirecting any of these characters you should prefix
          with the escape character: & < > ^ |



          eg ^ ^& ^| ^> ^< ^^




          Source Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com





          Further Reading




          • An A-Z Index of the Windows CMD command line | SS64.com

          • Windows CMD Commands (categorized) - Windows CMD - SS64.com

          • For - Loop through command output - Windows CMD - SS64.com

          • Pushd - change directory/folder - Windows CMD - SS64.com

          • Popd - Windows CMD - SS64.com


          • Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com



          PAUSE






          share|improve this answer















          The pipe | character is not recognized



          You would need to escape it as follows:



          ^|


          There are some additional errors in your code:




          • Piping to findstr /I (avi mp4 mkv) doesn't work as findstr doesn't work that way. You don't need findstr or piping anyway.


          • If it did work you would have to also escape ( and ).


          • "%%~di%%~pi%%~ni_aac%%~xi" doesn't give the output file the extension .acc



          Try the following:



          pushd %1
          FOR /F "usebackq tokens=*" %%i IN (`dir /b *.avi *.mp4 *.mkv`) DO (
          echo ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni.aac"
          )
          PAUSE
          popd


          Remove the echo if you are happy with the modified ffmpeg command.




          ^ Escape character.



          Adding the escape character before a command symbol allows it to be
          treated as ordinary text.



          When piping or redirecting any of these characters you should prefix
          with the escape character: & < > ^ |



          eg ^ ^& ^| ^> ^< ^^




          Source Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com





          Further Reading




          • An A-Z Index of the Windows CMD command line | SS64.com

          • Windows CMD Commands (categorized) - Windows CMD - SS64.com

          • For - Loop through command output - Windows CMD - SS64.com

          • Pushd - change directory/folder - Windows CMD - SS64.com

          • Popd - Windows CMD - SS64.com


          • Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com



          PAUSE







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 1 at 22:22

























          answered Jan 1 at 21:05









          DavidPostillDavidPostill

          105k25227262




          105k25227262













          • No, it does not work: it says ') was expected

            – AlexandreG
            Jan 1 at 21:55













          • Answer updated.

            – DavidPostill
            Jan 1 at 22:17



















          • No, it does not work: it says ') was expected

            – AlexandreG
            Jan 1 at 21:55













          • Answer updated.

            – DavidPostill
            Jan 1 at 22:17

















          No, it does not work: it says ') was expected

          – AlexandreG
          Jan 1 at 21:55







          No, it does not work: it says ') was expected

          – AlexandreG
          Jan 1 at 21:55















          Answer updated.

          – DavidPostill
          Jan 1 at 22:17





          Answer updated.

          – DavidPostill
          Jan 1 at 22:17


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Super User!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1389602%2flist-specific-files-from-a-directory%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Список кардиналов, возведённых папой римским Каликстом III

          Deduzione

          Mysql.sock missing - “Can't connect to local MySQL server through socket”